diff --git a/spark-webapp-runtime/mainwindow.cpp b/spark-webapp-runtime/mainwindow.cpp index 0a44216..5d8567b 100644 --- a/spark-webapp-runtime/mainwindow.cpp +++ b/spark-webapp-runtime/mainwindow.cpp @@ -2,7 +2,6 @@ #include <DMainWindow> #include <DTitlebar> -#include <DToolButton> #include <QLayout> #include <QFileInfo> @@ -17,10 +16,18 @@ MainWindow::MainWindow(QString szTitle, : DMainWindow(parent) , m_widget(new Widget(szUrl)) , m_dialog(dialog) + , btnBackward(new DToolButton(titlebar())) + , btnForward(new DToolButton(titlebar())) + , btnRefresh(new DToolButton(titlebar())) + , m_menu(new QMenu) + , m_fixSize(new QAction(tr("Fix Size"))) + , m_hideButtons(new QAction(tr("Hide Buttons"))) + , m_width(nWidth) + , m_height(nHeight) { // setFixedSize(nWidth, nHeight); // 应 shenmo 要求改成设置最小尺寸试试效果 - setMinimumSize(nWidth, nHeight); + setMinimumSize(m_width, m_height); setCentralWidget(m_widget); centralWidget()->layout()->setContentsMargins(0, 0, 0, 0); @@ -30,13 +37,10 @@ MainWindow::MainWindow(QString szTitle, titlebar()->setTitle(szTitle); titlebar()->setIcon(QIcon(":/images/spark-webapp-runtime.svg")); - DToolButton *btnBackward = new DToolButton(titlebar()); btnBackward->setIcon(QIcon(":/images/go-previous-24.svg")); btnBackward->setIconSize(QSize(36, 36)); - DToolButton *btnForward = new DToolButton(titlebar()); btnForward->setIcon(QIcon(":/images/go-next-24.svg")); btnForward->setIconSize(QSize(36, 36)); - DToolButton *btnRefresh = new DToolButton(titlebar()); btnRefresh->setIcon(QIcon(":/images/view-refresh.svg")); btnRefresh->setIconSize(QSize(36, 36)); @@ -44,6 +48,14 @@ MainWindow::MainWindow(QString szTitle, titlebar()->addWidget(btnForward, Qt::AlignLeft); titlebar()->addWidget(btnRefresh, Qt::AlignLeft); + m_fixSize->setCheckable(true); + m_fixSize->setChecked(false); + m_hideButtons->setCheckable(true); + m_hideButtons->setChecked(false); + m_menu->addAction(m_fixSize); + m_menu->addAction(m_hideButtons); + titlebar()->setMenu(m_menu); + connect(btnBackward, &DToolButton::clicked, this, [&]() { if (m_widget) @@ -65,6 +77,15 @@ MainWindow::MainWindow(QString szTitle, m_widget->refresh(); } }); + + connect(m_fixSize, &QAction::triggered, this, [=]() + { + fixSize(); + }); + connect(m_hideButtons, &QAction::triggered, this, [=]() + { + hideButtons(); + }); } MainWindow::~MainWindow() @@ -97,6 +118,42 @@ void MainWindow::setIcon(QString szIconPath) } } +void MainWindow::fixSize() +{ + if(m_fixSize->isChecked()) + { + setFixedSize(this->width(), this->height()); // setFixedSize() 等同于同时设置 MaximumSize 和 MinimumSize + resize(this->width(), this->height()); + + /* + * 尝试固定窗口大小后禁用最大化按钮,但是取消勾选后无法恢复 + * titlebar()->setDisableFlags(Qt::WindowMaximizeButtonHint); + */ + } + else + { + setMinimumSize(m_width, m_height); + setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + resize(this->width(), this->height()); + } +} + +void MainWindow::hideButtons() +{ + if(m_hideButtons->isChecked()) + { + titlebar()->removeWidget(btnBackward); + titlebar()->removeWidget(btnForward); + titlebar()->removeWidget(btnRefresh); + } + else + { + titlebar()->addWidget(btnBackward, Qt::AlignLeft); + titlebar()->addWidget(btnForward, Qt::AlignLeft); + titlebar()->addWidget(btnRefresh, Qt::AlignLeft); + } +} + void MainWindow::closeEvent(QCloseEvent *event) { m_dialog->close(); diff --git a/spark-webapp-runtime/mainwindow.h b/spark-webapp-runtime/mainwindow.h index 2e5fba4..892ff6f 100644 --- a/spark-webapp-runtime/mainwindow.h +++ b/spark-webapp-runtime/mainwindow.h @@ -3,6 +3,7 @@ #include <DMainWindow> #include <DAboutDialog> +#include <DToolButton> #include "widget.h" #include "globaldefine.h" @@ -23,6 +24,8 @@ public: ~MainWindow(); void setIcon(QString); + void fixSize(); + void hideButtons(); signals: void sigQuit(); @@ -31,6 +34,16 @@ private: Widget *m_widget; DAboutDialog *m_dialog; + DToolButton *btnBackward; + DToolButton *btnForward; + DToolButton *btnRefresh; + + QMenu *m_menu; + QAction *m_fixSize; + QAction *m_hideButtons; + + int m_width, m_height; + void closeEvent(QCloseEvent *event); }; diff --git a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.qm b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.qm index eddef58..35296ca 100644 Binary files a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.qm and b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.qm differ diff --git a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts index c58f15a..cd25dbc 100644 --- a/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts +++ b/spark-webapp-runtime/translations/spark-webapp-runtime_zh_CN.ts @@ -1,6 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> <TS version="2.1" language="zh_CN"> +<context> + <name>MainWindow</name> + <message> + <location filename="../mainwindow.cpp" line="23"/> + <source>Fix Size</source> + <translation>固定大小</translation> + </message> + <message> + <location filename="../mainwindow.cpp" line="24"/> + <source>Hide Buttons</source> + <translation>隐藏按钮</translation> + </message> +</context> <context> <name>QObject</name> <message>