初步重构
This commit is contained in:
@@ -1,39 +0,0 @@
|
||||
#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();
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "../Node.hpp"
|
||||
#include "Core/Base/global_include.h"
|
||||
#include <QWidget>
|
||||
|
||||
namespace YSG {
|
||||
class FileFolder : public Node<FileFolder> {
|
||||
public:
|
||||
QString mName;
|
||||
bool isShowSons = false;
|
||||
int deep = 0;
|
||||
void draw(int index, QPainter *painter);
|
||||
};
|
||||
class FileDialog : public QWidget, public NodeManager<FileFolder>, public Psc::Singleton<FileDialog> {
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit FileDialog(QWidget *parent = nullptr);
|
||||
~FileDialog() override;
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#include "File_Dialog.h"
|
||||
#include <QPainter>
|
||||
namespace YSG {
|
||||
File_Dialog::File_Dialog(QWidget* parent) : QWidget(parent) {
|
||||
//setAttribute(Qt::WA_OpaquePaintEvent);
|
||||
}
|
||||
File_Dialog::~File_Dialog() {}
|
||||
void File_Folder::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 File_Dialog::paintEvent(QPaintEvent* event) {
|
||||
QWidget::paintEvent(event);
|
||||
QPainter painter(this);
|
||||
int index = 0;
|
||||
for (File_Folder*& root : roots) {
|
||||
QQueue<File_Folder*> que;
|
||||
root->deep = 0;
|
||||
que.enqueue(root);
|
||||
while (!que.empty()) {
|
||||
File_Folder* 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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
#include "../Node.hpp"
|
||||
#include "Core/Base/global_include.h"
|
||||
#include <QWidget>
|
||||
namespace YSG {
|
||||
class File_Folder : public Node<File_Folder> {
|
||||
public:
|
||||
QString mName;
|
||||
bool isShowSons = false;
|
||||
int deep = 0;
|
||||
void draw(int index, QPainter* painter);
|
||||
};
|
||||
class File_Dialog : public QWidget, public NodeManager<File_Folder>, public Psc::Singleton<File_Dialog> {
|
||||
public:
|
||||
explicit File_Dialog(QWidget* parent = nullptr);
|
||||
~File_Dialog() override;
|
||||
protected:
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user