#include "ui/Menu/WindowManagerMenu.h" #include #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); } ); item->setCheckState(Qt::Checked); connect(ui->listWidget, &QListWidget::itemClicked, [](QListWidgetItem* item) { bool checked = !(item->checkState() == Qt::Checked); item->setCheckState(checked ? Qt::Checked : Qt::Unchecked); item->data(DockWidgetRole).value()->setVisible(checked); }); item->setData(DockWidgetRole, QVariant::fromValue(dockWidget)); ui->listWidget->addItem(item); } void WindowManagerMenu::RemoveDockWidget(class DockWidget* dockWidget) { }