DYTSrouce/src/ui/Menu/WindowManagerMenu.cpp

57 lines
1.7 KiB
C++
Raw Normal View History

2025-01-19 17:08:04 +00:00
#include "ui/Menu/WindowManagerMenu.h"
#include <QMessageBox>
#include "ui/MainFrame.h"
#include "ui/DockWidget.h"
#include "common/SpdLogger.h"
#include "ui_WindowManagerMenu.h"
const int DockWidgetRole = Qt::UserRole + 1;
WindowManagerMenu::WindowManagerMenu(QWidget* parent)
: QWidget(parent)
, ui(new Ui::WindowManagerMenu) {
ui->setupUi(this);
}
WindowManagerMenu::~WindowManagerMenu() {
delete ui;
}
void WindowManagerMenu::AddDockWidget(DockWidget* dockWidget) {
if (nullptr == dockWidget) {
LOG_ERROR("dockWidget is nullptr");
return;
}
QListWidgetItem* item = new QListWidgetItem(dockWidget->windowTitle());
connect(dockWidget, &DockWidget::windowTitleChanged, [item](const QString& title) {
item->setText(title);
}
);
2025-11-03 23:23:35 +00:00
// 初始勾选状态与 dock 的可见性同步
item->setCheckState(dockWidget->isVisible() ? Qt::Checked : Qt::Unchecked);
2025-01-19 17:08:04 +00:00
connect(ui->listWidget, &QListWidget::itemClicked, [](QListWidgetItem* item) {
bool checked = !(item->checkState() == Qt::Checked);
item->setCheckState(checked ? Qt::Checked : Qt::Unchecked);
item->data(DockWidgetRole).value<DockWidget*>()->setVisible(checked);
});
item->setData(DockWidgetRole, QVariant::fromValue(dockWidget));
2025-11-03 23:23:35 +00:00
// 同步 dock 可见性变化到勾选状态
connect(dockWidget, &DockWidget::visibilityChanged, [item](bool visible) {
item->setCheckState(visible ? Qt::Checked : Qt::Unchecked);
});
2025-01-21 00:52:43 +00:00
connect(dockWidget, &DockWidget::signalClose, [this, item]() {
item->setCheckState(Qt::Unchecked);
});
2025-01-19 17:08:04 +00:00
ui->listWidget->addItem(item);
}
void WindowManagerMenu::RemoveDockWidget(class DockWidget* dockWidget) {
}