改进完成
This commit is contained in:
parent
7edec993f5
commit
b2c2866e04
|
@ -1,21 +1,21 @@
|
|||
WordsIDE/release/
|
||||
WordsIDE/debug/
|
||||
DesParser/release/
|
||||
DesParser/debug/
|
||||
WordsIDE/release/*
|
||||
WordsIDE/debug/*
|
||||
DesParser/release/*
|
||||
DesParser/debug/*
|
||||
.vs/
|
||||
Testpad/debug/
|
||||
Testpad/release/
|
||||
libConfig/debug/
|
||||
libParse/debug/
|
||||
libParse/release/
|
||||
libProjectManager/debug/
|
||||
libConfig/release/
|
||||
libProjectManager/release/
|
||||
/u_test/release/qmake/temp
|
||||
/u_test/debug
|
||||
/SplitView/debug
|
||||
/u_test/release
|
||||
/GenericConsole/debug
|
||||
/x64/Debug
|
||||
/x64/Release
|
||||
/GenericConsole/debug/qmake/temp
|
||||
Testpad/debug/*
|
||||
Testpad/release/*
|
||||
libConfig/debug/*
|
||||
libConfig/release/*
|
||||
libParse/debug/*
|
||||
libParse/release/*
|
||||
libProjectManager/debug/*
|
||||
libProjectManager/release/*
|
||||
/u_test/release/*
|
||||
/u_test/debug/*
|
||||
/SplitView/debug/*
|
||||
/SplitView/release/*
|
||||
/GenericConsole/debug/*
|
||||
/GenericConsole/release/*
|
||||
/x64/Debug/*
|
||||
/x64/Release/*
|
|
@ -248,7 +248,7 @@ void ViewPresent::purge(ViewRes *target) {
|
|||
|
||||
all_func_views.removeAll(cinst);
|
||||
freedom_views.removeAll(cinst);
|
||||
display_members.removeAll(cinst);
|
||||
display_members = nullptr;
|
||||
objsRelateRebuild();
|
||||
|
||||
delete cinst;
|
||||
|
@ -311,15 +311,14 @@ void ViewPresent::resetEngross(RectCom *view) {
|
|||
vit->pRelease();
|
||||
|
||||
temp_visible_view = std::make_pair(DockType::LEFT, nullptr);
|
||||
if (display_members.size())
|
||||
display_members.clear();
|
||||
display_members = nullptr;
|
||||
|
||||
if (freedom_views.contains(view))
|
||||
freedom_views.removeAll(view);
|
||||
|
||||
view->setParentRes(this);
|
||||
view->bind()->setVisible(true);
|
||||
display_members << view;
|
||||
display_members = view;
|
||||
|
||||
objsRelateRebuild();
|
||||
}
|
||||
|
@ -372,25 +371,17 @@ void ViewPresent::objsRelateRebuild() {
|
|||
update();
|
||||
}
|
||||
|
||||
std::pair<RectCom *, RectCom *> ViewPresent::child() const {
|
||||
RectCom *inst0 = nullptr, *inst1 = nullptr;
|
||||
if (display_members.size() > 1)
|
||||
inst1 = display_members[1];
|
||||
if (display_members.size() > 0)
|
||||
inst0 = display_members[0];
|
||||
|
||||
return std::make_pair(inst0, inst1);
|
||||
}
|
||||
std::pair<RectCom *, RectCom *> ViewPresent::child() const { return std::make_pair(display_members, nullptr); }
|
||||
|
||||
void ViewPresent::replaceComp(RectCom *view, RectCom *old) {
|
||||
if (!display_members.contains(old))
|
||||
if (display_members != old)
|
||||
throw new SimpleException<QString>("参数错误", "指定替换的界面不属于此界面");
|
||||
|
||||
if (display_members.contains(view))
|
||||
if (display_members == view)
|
||||
return;
|
||||
|
||||
view->setParentRes(this);
|
||||
display_members.replace(display_members.indexOf(old), view);
|
||||
display_members = view;
|
||||
|
||||
objsRelateRebuild();
|
||||
}
|
||||
|
@ -423,14 +414,10 @@ void ViewPresent::pClose() { throw new SimpleException<bool>("非法操作", "
|
|||
void ViewPresent::registElement(QWidget *) { throw new SimpleException<bool>("非法操作", "不允许对ViewPanel调用registElement"); }
|
||||
|
||||
void ViewPresent::setParentRes(ViewRes *) {
|
||||
auto pair = child();
|
||||
if (display_members) {
|
||||
display_members->setParentRes(this);
|
||||
}
|
||||
|
||||
if (pair.first) {
|
||||
pair.first->setParentRes(this);
|
||||
}
|
||||
if (pair.second) {
|
||||
pair.second->setParentRes(this);
|
||||
}
|
||||
if (temp_visible_view.second) {
|
||||
temp_visible_view.second->setParentRes(this);
|
||||
}
|
||||
|
@ -441,15 +428,9 @@ ViewRes *ViewPresent::parentRes() const { return nullptr; }
|
|||
void ViewPresent::paintEvent(QPaintEvent *ev) {
|
||||
QWidget::paintEvent(ev);
|
||||
|
||||
if (display_members.size() == 2) {
|
||||
QPainter p(this);
|
||||
auto handle_rect = this->handle_rect();
|
||||
p.fillRect(handle_rect, QBrush(Qt::gray));
|
||||
}
|
||||
|
||||
for (auto &it : display_members) {
|
||||
it->bind()->setVisible(true);
|
||||
it->bind()->update();
|
||||
if (display_members) {
|
||||
display_members->bind()->setVisible(true);
|
||||
display_members->bind()->update();
|
||||
}
|
||||
|
||||
if (temp_visible_view.second) {
|
||||
|
@ -477,10 +458,10 @@ void ViewPresent::removeComp(RectCom *child_inst) {
|
|||
for (auto &lsn : lsn_list)
|
||||
lsn->freedomRemoved(child_inst);
|
||||
} else {
|
||||
if (!display_members.contains(child_inst))
|
||||
if (display_members != child_inst)
|
||||
throw new SimpleException<QString>("参数非法", "不允许移除隐藏的自由视图");
|
||||
|
||||
display_members.removeAll(child_inst);
|
||||
display_members = nullptr;
|
||||
}
|
||||
|
||||
child_inst->setParentRes(nullptr);
|
||||
|
@ -533,13 +514,8 @@ void ViewPresent::mouseMoveEvent(QMouseEvent *event) {
|
|||
}
|
||||
|
||||
void ViewPresent::relayout() {
|
||||
auto rects = view_rects();
|
||||
|
||||
if (display_members.size() == 2) {
|
||||
display_members[0]->relayout(rects.first.toRect());
|
||||
display_members[1]->relayout(rects.second.toRect());
|
||||
} else if (display_members.size() == 1) {
|
||||
display_members[0]->relayout(this->rect());
|
||||
if (display_members) {
|
||||
display_members->relayout(this->rect());
|
||||
}
|
||||
|
||||
if (temp_visible_view.second) {
|
||||
|
|
|
@ -217,7 +217,7 @@ namespace SplitFrame {
|
|||
// 视图展现堆栈===============================
|
||||
QList<RectCom *> all_func_views;
|
||||
QList<RectCom *> freedom_views;
|
||||
QList<RectCom *> display_members;
|
||||
RectCom *display_members = nullptr;
|
||||
|
||||
std::pair<DockType, RectCom *> temp_visible_view = std::make_pair(DockType::LEFT, nullptr);
|
||||
|
||||
|
|
102
u_test/main.cpp
102
u_test/main.cpp
|
@ -20,64 +20,64 @@ enum class XEnum { ONE, TWO };
|
|||
int main(int argc, char *argv[]) {
|
||||
QApplication a(argc, argv);
|
||||
|
||||
qDebug() << QString("%1").arg((int)XEnum::ONE);
|
||||
// qDebug() << QString("%1").arg((int)XEnum::ONE);
|
||||
|
||||
// auto win = new QMainWindow();
|
||||
// win->setMinimumSize(800, 600);
|
||||
// win->menuBar()->addMenu("文件");
|
||||
// auto tbar = new QToolBar();
|
||||
// win->addToolBar(Qt::ToolBarArea::LeftToolBarArea, tbar);
|
||||
auto win = new QMainWindow();
|
||||
win->setMinimumSize(800, 600);
|
||||
win->menuBar()->addMenu("文件");
|
||||
auto tbar = new QToolBar();
|
||||
win->addToolBar(Qt::ToolBarArea::LeftToolBarArea, tbar);
|
||||
|
||||
// auto conv = new ViewPresent();
|
||||
// auto aview = new XWidget(conv, Qt::black);
|
||||
// auto bview = new XWidget(conv, Qt::green);
|
||||
// auto cview = new XWidget(conv, Qt::yellow);
|
||||
// auto dview = new YWidget(conv);
|
||||
auto conv = new ViewPresent();
|
||||
auto aview = new XWidget(conv, Qt::black);
|
||||
auto bview = new XWidget(conv, Qt::green);
|
||||
auto cview = new XWidget(conv, Qt::yellow);
|
||||
auto dview = new YWidget(conv);
|
||||
|
||||
// auto rect0 = conv->appendView(aview, QIcon(), "hello0");
|
||||
// auto rect1 = conv->appendView(bview, QIcon(), "hello1");
|
||||
// auto rect2 = conv->appendView(cview, QIcon(), "hello2");
|
||||
// auto rect3 = conv->appendView(dview, QIcon(), "hello3");
|
||||
// conv->markFreedom(rect0);
|
||||
// conv->markFreedom(rect1);
|
||||
// conv->markFreedom(rect2);
|
||||
// conv->markFreedom(rect3);
|
||||
auto rect0 = conv->appendView(aview, QIcon(), "hello0");
|
||||
auto rect1 = conv->appendView(bview, QIcon(), "hello1");
|
||||
auto rect2 = conv->appendView(cview, QIcon(), "hello2");
|
||||
auto rect3 = conv->appendView(dview, QIcon(), "hello3");
|
||||
conv->markFreedom(rect0);
|
||||
conv->markFreedom(rect1);
|
||||
conv->markFreedom(rect2);
|
||||
conv->markFreedom(rect3);
|
||||
|
||||
// conv->objsRelateRebuild();
|
||||
// conv->resetEngross(static_cast<RectCom *>(rect3));
|
||||
conv->objsRelateRebuild();
|
||||
conv->resetEngross(static_cast<RectCom *>(rect3));
|
||||
|
||||
// win->setCentralWidget(conv->bind());
|
||||
win->setCentralWidget(conv->bind());
|
||||
|
||||
// auto b_left = tbar->addAction("左侧添加");
|
||||
// win->connect(b_left, &QAction::triggered, [=](bool v) {
|
||||
// auto items = conv->freedomViews();
|
||||
// if (items.size()) {
|
||||
// conv->temporaryVisible(SplitFrame::DockType::LEFT, items.last());
|
||||
// }
|
||||
// });
|
||||
// auto b_right = tbar->addAction(" 右侧添加");
|
||||
// win->connect(b_right, &QAction::triggered, [=](bool v) {
|
||||
// auto items = conv->freedomViews();
|
||||
// if (items.size()) {
|
||||
// conv->temporaryVisible(SplitFrame::DockType::RIGHT, items.last());
|
||||
// }
|
||||
// });
|
||||
// auto b_top = tbar->addAction("上侧添加");
|
||||
// win->connect(b_top, &QAction::triggered, [=](bool v) {
|
||||
// auto items = conv->freedomViews();
|
||||
// if (items.size()) {
|
||||
// conv->temporaryVisible(SplitFrame::DockType::TOP, items.last());
|
||||
// }
|
||||
// });
|
||||
// auto b_bottom = tbar->addAction("下侧添加");
|
||||
// win->connect(b_bottom, &QAction::triggered, [=](bool v) {
|
||||
// auto items = conv->freedomViews();
|
||||
// if (items.size()) {
|
||||
// conv->temporaryVisible(SplitFrame::DockType::BOTTOM, items.last());
|
||||
// }
|
||||
// });
|
||||
auto b_left = tbar->addAction("左侧添加");
|
||||
win->connect(b_left, &QAction::triggered, [=](bool v) {
|
||||
auto items = conv->freedomViews();
|
||||
if (items.size()) {
|
||||
conv->temporaryVisible(SplitFrame::DockType::LEFT, items.last());
|
||||
}
|
||||
});
|
||||
auto b_right = tbar->addAction(" 右侧添加");
|
||||
win->connect(b_right, &QAction::triggered, [=](bool v) {
|
||||
auto items = conv->freedomViews();
|
||||
if (items.size()) {
|
||||
conv->temporaryVisible(SplitFrame::DockType::RIGHT, items.last());
|
||||
}
|
||||
});
|
||||
auto b_top = tbar->addAction("上侧添加");
|
||||
win->connect(b_top, &QAction::triggered, [=](bool v) {
|
||||
auto items = conv->freedomViews();
|
||||
if (items.size()) {
|
||||
conv->temporaryVisible(SplitFrame::DockType::TOP, items.last());
|
||||
}
|
||||
});
|
||||
auto b_bottom = tbar->addAction("下侧添加");
|
||||
win->connect(b_bottom, &QAction::triggered, [=](bool v) {
|
||||
auto items = conv->freedomViews();
|
||||
if (items.size()) {
|
||||
conv->temporaryVisible(SplitFrame::DockType::BOTTOM, items.last());
|
||||
}
|
||||
});
|
||||
|
||||
// win->show();
|
||||
win->show();
|
||||
|
||||
return a.exec();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue