Files
Renderive/YSGraphic_Core/base/FileDialog/FileDialog.cpp
T
2026-06-16 13:33:27 +08:00

40 lines
1.3 KiB
C++

#include "FileDialog.h"
#include <QPainter>
namespace YSG {
FileDialog::FileDialog(QWidget *parent) : QWidget(parent) {
//setAttribute(Qt::WA_OpaquePaintEvent);
}
FileDialog::~FileDialog() {
}
void FileFolder::draw(int index, QPainter *painter) {
static QImage fileFolder = QImage(":fileFolder.png");
int x = 10 + 20 * deep;
int y = 10 + 30 * index;
// painter->drawImage(x, y, fileFolder);
painter->drawImage(0, 0, fileFolder);
painter->drawText(x + 20, y + 10, mName);
}
void FileDialog::paintEvent(QPaintEvent *event) {
QWidget::paintEvent(event);
QPainter painter(this);
int index = 0;
for (FileFolder *&root: roots) {
QQueue<FileFolder *> que;
root->deep = 0;
que.enqueue(root);
while (!que.empty()) {
FileFolder *cur = que.dequeue();
int n = cur->sons.size();
cur->draw(index++, &painter);
for (int i = 0; i < n; ++i) {
if (cur->isShowSons) {
cur->sons[i]->deep = cur->deep + 1;
que.enqueue(cur->sons[i]);
}
}
}
}
painter.end();
}
}