#include "FileDialog.h" #include 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 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(); } }