Files
Renderive/Widget/base/view/FileFolderBar.cpp
T
2026-08-01 20:09:45 +08:00

33 lines
931 B
C++

#include "FileFolderBar.h"
#include <QPainter>
#include <queue>
namespace Flex_Qt {
File_Folder_Bar::File_Folder_Bar(QWidget* parent) : QWidget(parent) {
//setAttribute(Qt::WA_OpaquePaintEvent);
}
File_Folder_Bar::~File_Folder_Bar() {}
void File_Folder_Bar::paintEvent(QPaintEvent* event) {
QWidget::paintEvent(event);
QPainter painter(this);
int index = 0;
for (File_Folder*& root : roots) {
std::queue<File_Folder*> que;
root->deep = 0;
que.push(root);
while (!que.empty()) {
File_Folder* cur = que.front();
que.pop();
int n = cur->sons.size();
cur->draw(index++, &painter);
for (int i = 0; i < n; ++i) {
if (cur->is_show_sons) {
cur->sons[i]->deep = cur->deep + 1;
que.push(cur->sons[i]);
}
}
}
}
painter.end();
}
}