DYTSrouce/src/ui/DockWidget.cpp

85 lines
2.1 KiB
C++
Raw Normal View History

2025-01-04 04:12:51 +00:00
#include "DockWidget.h"
#include <QStyleOptionDockWidget>
2025-01-19 17:08:04 +00:00
#include "ui/Menu/WindowManagerMenu.h"
#include "common/SpdLogger.h"
#include "ui/MainFrame.h"
2025-01-04 04:12:51 +00:00
DockWidgetTitleBar::DockWidgetTitleBar(QWidget* parent)
: QWidget(parent) {
2025-01-19 17:08:04 +00:00
2025-01-04 04:12:51 +00:00
}
DockWidgetTitleBar::~DockWidgetTitleBar() {
}
QSize DockWidgetTitleBar::minimumSizeHint() const {
QDockWidget* dw = qobject_cast<QDockWidget*>(parentWidget());
Q_ASSERT(dw);
QSize result(0, 90);
if (dw->features() & QDockWidget::DockWidgetVerticalTitleBar)
result.transpose();
return result;
}
DockWidget::DockWidget(const QString& title, QWidget* parent)
: QDockWidget(title, parent) {
setFeatures(DockWidgetClosable | DockWidgetMovable | DockWidgetFloatable);
2025-01-19 17:08:04 +00:00
WindowManagerMenu* windowManagerMenu = MainFrame::Get().GetMenuManager<WindowManagerMenu>("window_manager");
if (nullptr != windowManagerMenu) {
windowManagerMenu->AddDockWidget(this);
}
2025-01-04 04:12:51 +00:00
}
DockWidget::DockWidget(QWidget* parent)
: QDockWidget(parent) {
setFeatures(DockWidgetClosable | DockWidgetMovable | DockWidgetFloatable);
}
DockWidget::~DockWidget() {
}
void DockWidget::setWindowTitle(const QString& text) {
QDockWidget::setWindowTitle(text);
if (nullptr != titleBar_) {
titleBar_->SetTitle(text);
}
}
void DockWidget::SetDockWidgetTitleBar(DockWidgetTitleBar* titleBar) {
2025-01-19 17:08:04 +00:00
if (nullptr != titleBar_) {
disconnect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::close);
}
2025-01-04 04:12:51 +00:00
titleBar_ = titleBar;
2025-01-19 17:08:04 +00:00
if (nullptr == titleBar_) {
LOG_ERROR("DockWidget::SetDockWidgetTitleBar titleBar is nullptr");
return;
}
titleBar_->SetTitle(windowTitle());
2025-01-21 00:52:43 +00:00
connect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::OnClose);
2025-01-04 04:12:51 +00:00
QDockWidget::setTitleBarWidget(titleBar_);
}
void DockWidget::showEvent(QShowEvent* e) {
QDockWidget::showEvent(e);
}
void DockWidget::resizeEvent(QResizeEvent* e) {
QDockWidget::resizeEvent(e);
QStyleOptionDockWidget opt;
initStyleOption(&opt);
}
2025-01-21 00:52:43 +00:00
void DockWidget::OnClose() {
LOG_INFO("DockWidget::OnClose");
close();
emit signalClose();
}