qt/ledset/expertboxlayoutwin.cpp

101 lines
3.2 KiB
C++
Raw Normal View History

2023-04-18 18:21:34 +08:00
#include "expertboxlayoutwin.h"
#include "moduleunit.h"
#include "gutil/qgui.h"
2023-07-28 14:48:41 +08:00
#include "gutil/qjson.h"
#include "globalfunc.h"
2023-04-18 18:21:34 +08:00
#include <QPushButton>
#include <QCheckBox>
#include <QMessageBox>
#include <QScrollArea>
2023-07-28 14:48:41 +08:00
#include <QFileDialog>
2023-04-18 18:21:34 +08:00
ExpertBoxLayoutWin::ExpertBoxLayoutWin(QWidget *parent) : BaseWin{parent} {
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle("箱体高级布局");
resize(1024, 720);
auto vBox = new VBox(center);
vBox->setContentsMargins(0,0,0,0);
vBox->setSpacing(3);
vBox->addLayout(addBtns(new QHBoxLayout()));
auto hBox = new HBox(vBox);
vBox = new VBox(hBox);
vBox->addWidget(new QLabel("模组编辑"));
auto grid = new Grid(vBox);
auto btnAdd = new QPushButton("添加");
2023-07-28 14:48:41 +08:00
connect(btnAdd, &QPushButton::clicked, this, [this] {
auto file = QFileDialog::getOpenFileName(this, tr("打开单元板文件"), gFileHome, tr("单元板文件 (*.module)"));
if(file.isEmpty()) return;
QFile qFile(file);
if(! qFile.open(QFile::ReadOnly)) {
QMessageBox::critical(this, tr("打开单元板文件失败"), file);
return;
}
QString err;
auto json = JFrom(&qFile, &err).toObj();
qFile.close();
if(! err.isEmpty()) {
QMessageBox::critical(this, tr("解析 json 失败"), err+" "+file);
return;
}
new ModuleUnit(this, "J1", 0, 0, json["ModuleWidth"].toInt(), json["ModuleHeight"].toInt(), box);
});
2023-04-18 18:21:34 +08:00
grid->addWidget(btnAdd, 0, 0);
auto btnDel = new QPushButton("删除");
grid->addWidget(btnDel, 0, 1);
auto btnMove = new QPushButton("移动");
grid->addWidget(btnMove, 1, 0);
auto btnRotate = new QPushButton("旋转");
grid->addWidget(btnRotate, 1, 1);
vBox->addWidget(new QLabel("HUB口编辑"));
grid = new Grid(vBox);
auto btnPort = new QPushButton("端口");
grid->addWidget(btnPort, 0, 0);
auto btnManual = new QPushButton("手动");
grid->addWidget(btnManual, 0, 1);
auto btnUp = new QPushButton("上移");
grid->addWidget(btnUp, 1, 0);
auto btnDown = new QPushButton("下移");
grid->addWidget(btnDown, 1, 1);
vBox->addWidget(new QLabel("HUB口编辑"));
grid = new Grid(vBox);
auto fdHasPos = new QCheckBox("位置");
grid->addWidget(fdHasPos, 0, 0);
auto fdHasSize = new QCheckBox("大小");
grid->addWidget(fdHasSize, 0, 1);
auto fdHasConn = new QCheckBox("连接");
grid->addWidget(fdHasConn, 1, 0);
auto fdHasName = new QCheckBox("名称");
grid->addWidget(fdHasName, 1, 1);
auto fdHasOutline = new QCheckBox("轮廓");
grid->addWidget(fdHasOutline, 2, 0);
auto fdHasRotate = new QCheckBox("旋转");
grid->addWidget(fdHasRotate, 2, 1);
vBox->addStretch();
vBox = new VBox(hBox);
hBox = new HBox(vBox);
hBox->addStretch();
auto scroll = new QScrollArea;
vBox->addWidget(scroll);
2023-07-28 14:48:41 +08:00
box = new QWidget;
scroll->setWidget(box);
box->resize(1024, 1024);
box->setAutoFillBackground(true);
2023-04-18 18:21:34 +08:00
auto pal = palette();
pal.setColor(QPalette::Window, QColor(0x222222));
2023-07-28 14:48:41 +08:00
box->setPalette(pal);
2023-04-18 18:21:34 +08:00
2023-07-28 14:48:41 +08:00
new ModuleUnit(this, "J1", 0, 0, 128, 128, box);
2023-04-18 18:21:34 +08:00
}