#include "PanelWidgetBase.h" #include "MainWindow.h" #include #include namespace GUI { PanelWidgetBase::PanelWidgetBase(MainWindow *mainWindow) : QWidget(mainWindow), m_MainWindow(mainWindow) { // 创建布局 m_Layout = new QVBoxLayout(this); m_Layout->setMargin(0); m_Layout->setSpacing(3); // 设置标题 m_TitleLabel = new QLabel(this); m_TitleLabel->setStyleSheet(" QLabel{\ background-color: qlineargradient(x1 : 0, x2 : 0, y1 : 0, y2 : 1, stop : 0 #f7f7f7, stop:1 #dbdbdb); \ min-height:32px; \ max-height:32px; \ font-size: 12pt; \ font-weight: bold; \ color: rgb(57, 65, 89); \ }"); m_TitleLabel->setObjectName("PanelTitleLabel"); m_TitleLabel->setFixedHeight(50); m_Layout->addWidget(m_TitleLabel); } PanelWidgetBase::~PanelWidgetBase() { // 移除显示部件 // removeWidget(); delete m_Layout; delete m_TitleLabel; } // 设置标题内容 void PanelWidgetBase::setTitle(QString title) { m_TitleLabel->setText(title); } // 获取标题内容 QString PanelWidgetBase::getTitle() const { return m_TitleLabel->text(); } // 设置标题显示高度 void PanelWidgetBase::setTitleHeight(int height) { m_TitleLabel->setFixedHeight(height); } // 设置显示内容 void PanelWidgetBase::setWidget(QWidget *widget) { // 如果已经有内容需要先移除 this->removeWidget(); if (widget == nullptr) return; // 添加新的内容 m_Layout->addWidget(widget); m_Widget = widget; } // 移除显示内容 void PanelWidgetBase::removeWidget() { if (m_Widget == nullptr) return; m_Layout->removeWidget(m_Widget); m_Widget->close(); delete m_Widget; m_Widget = nullptr; } QWidget* PanelWidgetBase::getCurrentWidget() { return m_Widget; } }