#include "FrameTitleBar.h" #include #include #include #include #include #include "common/RecourceHelper.h" #include "ui_FrameTitleBar.h" FrameTitleBar::FrameTitleBar(QWidget* parent) : QFrame(parent) , ui(new Ui::FrameTitleBar) { ui->setupUi(this); setFocusPolicy(Qt::StrongFocus); connect(ui->sys_close, &QPushButton::clicked, this, &FrameTitleBar::OnCloseBtnClicked); connect(ui->sys_min, &QPushButton::clicked, this, &FrameTitleBar::OnMinBtnClicked); connect(ui->sys_max, &QPushButton::clicked, this, &FrameTitleBar::OnMaxBtnClicked); connect(ui->sys_restore, &QPushButton::clicked, this, &FrameTitleBar::OnRestorClicked); //connect(this, &FrameTitleBar::doubleClick, this, &FrameTitleBar::OnDoubleClicked); ui->sys_restore->hide(); ui->sys_max->hide(); SetSysButton(0); setAttribute(Qt::WA_StyledBackground); } FrameTitleBar::~FrameTitleBar() { delete ui; } void FrameTitleBar::SetTitle(const QString& title) { ui->sys_title->setText(title); if (mainWidget_) { mainWidget_->setWindowTitle(title); } } void FrameTitleBar::SetMainWidget(QWidget* widget) { mainWidget_ = widget; } void FrameTitleBar::OnMaximized(bool maximized) { ui->sys_restore->setVisible(maximized); ui->sys_max->setVisible(!maximized); } QPushButton* FrameTitleBar::InsertPushButtonMenu(const QString& name, int index) { if (nullptr == menuLayout_) { qDebug() << __FUNCTION__ << "menu layout is nullptr"; return nullptr; } QPushButton* btn = new QPushButton(this); btn->setText(name); btn->setCheckable(true); menuLayout_->insertWidget(index, btn); buttonCourp_->addButton(btn, index); return btn; } void FrameTitleBar::paintEvent(QPaintEvent* event) { QStyleOption opt; opt.initFrom(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } void FrameTitleBar::OnMinBtnClicked() { if (nullptr == mainWidget_) { qDebug() << __FUNCTION__ << "mainWidget is nullptr"; return; } mainWidget_->showMinimized(); } void FrameTitleBar::OnMaxBtnClicked() { if (nullptr == mainWidget_) { qDebug() << __FUNCTION__ << "mainWidget is nullptr"; return; } mainWidget_->showMaximized(); } void FrameTitleBar::OnRestorClicked() { if (nullptr == mainWidget_) { qDebug() << __FUNCTION__ << "mainWidget is nullptr"; return; } mainWidget_->showNormal(); } void FrameTitleBar::OnCloseBtnClicked() { if (nullptr == mainWidget_) { qDebug() << __FUNCTION__ << "mainWidget is nullptr"; return; } mainWidget_->close(); } void FrameTitleBar::InitSkinMemu() { QStringList names; names << tr("default") << tr("silver") << tr("blue"); QStringList values; values << "default" << "silver" << "blue"; assert(values.count() == names.count()); ui->sys_skin->setPopupMode(QToolButton::InstantPopup); for (int i = 0; i < names.count(); ++i) { QAction* action = new QAction(names[i], this); action->setData(values[i]); ui->sys_skin->addAction(action); connect(action, &QAction::triggered, &RecourceHelper::Get(), &RecourceHelper::OnChangeStyle); } } void FrameTitleBar::InitMenuWidget() { menuLayout_ = new QHBoxLayout(ui->menu_Widget); menuLayout_->setSpacing(6); menuLayout_->setContentsMargins(9, 0, 0, 0); buttonCourp_ = new QButtonGroup(this); } void FrameTitleBar::SetSysButton(unsigned int sysBtn) { ftbButton_ = sysBtn; ui->sys_icon->setVisible(static_cast(ftbButton_ & FTB_ICON)); ui->sys_title->setVisible(static_cast(ftbButton_ & FTB_TTILE)); ui->menu_Widget->setVisible(static_cast(ftbButton_ & FTB_MENU)); ui->sys_skin->setVisible(static_cast(ftbButton_ & FTB_SKIN)); ui->sys_min->setVisible(static_cast(ftbButton_ & FTB_MIN)); ui->sys_max->setVisible(static_cast(ftbButton_ & FTB_MAX)); ui->sys_close->setVisible(static_cast(ftbButton_ & FTB_CLOSE)); }