From 05fedeedb28df769ce16efea39be1cc5e2916b98 Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <zhaoyuhang@rankyee.com> Date: 周三, 06 12月 2023 14:13:01 +0800 Subject: [PATCH] minor tweaks --- src/quick/quickwindowagent.h | 16 ++-- src/core/contexts/abstractwindowcontext.cpp | 8 +- src/widgets/widgetwindowagent.cpp | 16 ++-- src/core/contexts/abstractwindowcontext_p.h | 24 ++++---- src/widgets/widgetwindowagent.h | 16 ++-- examples/mainwindow/mainwindow.cpp | 31 +++++++++- src/quick/quickwindowagent.cpp | 16 ++-- 7 files changed, 76 insertions(+), 51 deletions(-) diff --git a/examples/mainwindow/mainwindow.cpp b/examples/mainwindow/mainwindow.cpp index ae7cd16..adcf6cd 100644 --- a/examples/mainwindow/mainwindow.cpp +++ b/examples/mainwindow/mainwindow.cpp @@ -53,16 +53,41 @@ return menuBar; }(); - static const auto buttonStyleSheet = QLatin1String{ "QPushButton{color:black;};QPushButton:hover{background-color:black;color:white;}" }; + static const auto buttonStyleSheet = QLatin1String{ R"( +QPushButton { + background-color:white; + color:black; +} +QPushButton:hover { + background-color:black; + color:white; +} +QPushButton:pressed { + background-color:red; + color:white; +} +)" }; auto iconButton = new QPushButton("I"); + iconButton->setFlat(true); + iconButton->setAttribute(Qt::WA_Hover); + iconButton->setMouseTracking(true); iconButton->setStyleSheet(buttonStyleSheet); auto minButton = new QPushButton("鈥�"); + minButton->setFlat(true); + minButton->setAttribute(Qt::WA_Hover); + minButton->setMouseTracking(true); minButton->setStyleSheet(buttonStyleSheet); auto maxButton = new QPushButton("馃棖"); - maxButton->setStyleSheet(buttonStyleSheet); maxButton->setCheckable(true); + maxButton->setFlat(true); + maxButton->setAttribute(Qt::WA_Hover); + maxButton->setMouseTracking(true); + maxButton->setStyleSheet(buttonStyleSheet); auto closeButton = new QPushButton("鉁�"); + closeButton->setFlat(true); + closeButton->setAttribute(Qt::WA_Hover); + closeButton->setMouseTracking(true); closeButton->setStyleSheet(buttonStyleSheet); auto windowBar = new QWK::WindowBar(); @@ -97,5 +122,5 @@ setMenuWidget(windowBar); setCentralWidget(clockWidget); setWindowTitle("Example MainWindow"); - resize(1024, 768); + resize(640, 480); } diff --git a/src/core/contexts/abstractwindowcontext.cpp b/src/core/contexts/abstractwindowcontext.cpp index 9e0d7cd..1c0e739 100644 --- a/src/core/contexts/abstractwindowcontext.cpp +++ b/src/core/contexts/abstractwindowcontext.cpp @@ -8,7 +8,7 @@ AbstractWindowContext::~AbstractWindowContext() = default; - bool AbstractWindowContext::setHitTestVisible(QObject *obj, bool visible) { + bool AbstractWindowContext::setHitTestVisible(const QObject *obj, bool visible) { Q_ASSERT(obj); if (!obj) { return false; @@ -38,7 +38,7 @@ } bool AbstractWindowContext::setSystemButton(CoreWindowAgent::SystemButton button, - QObject *obj) { + const QObject *obj) { Q_ASSERT(obj); Q_ASSERT(button != CoreWindowAgent::Unknown); if (!obj || (button == CoreWindowAgent::Unknown)) { @@ -52,7 +52,7 @@ return true; } - bool AbstractWindowContext::setTitleBar(QObject *item) { + bool AbstractWindowContext::setTitleBar(const QObject *item) { Q_ASSERT(item); if (!item) { return false; @@ -90,7 +90,7 @@ continue; } if (m_delegate->mapGeometryToScene(currentButton).contains(pos)) { - *button = CoreWindowAgent::WindowIcon; + *button = static_cast<CoreWindowAgent::SystemButton>(i); return true; } } diff --git a/src/core/contexts/abstractwindowcontext_p.h b/src/core/contexts/abstractwindowcontext_p.h index 996a0e3..b1202ea 100644 --- a/src/core/contexts/abstractwindowcontext_p.h +++ b/src/core/contexts/abstractwindowcontext_p.h @@ -25,15 +25,15 @@ inline QObject *host() const; inline QWindow *window() const; - inline bool isHitTestVisible(QObject *obj) const; - bool setHitTestVisible(QObject *obj, bool visible); + inline bool isHitTestVisible(const QObject *obj) const; + bool setHitTestVisible(const QObject *obj, bool visible); bool setHitTestVisible(const QRect &rect, bool visible); - inline QObject *systemButton(CoreWindowAgent::SystemButton button) const; - bool setSystemButton(CoreWindowAgent::SystemButton button, QObject *obj); + inline const QObject *systemButton(CoreWindowAgent::SystemButton button) const; + bool setSystemButton(CoreWindowAgent::SystemButton button, const QObject *obj); - inline QObject *titleBar() const; - bool setTitleBar(QObject *obj); + inline const QObject *titleBar() const; + bool setTitleBar(const QObject *obj); void showSystemMenu(const QPoint &pos); @@ -46,11 +46,11 @@ std::unique_ptr<WindowItemDelegate> m_delegate; QWindow *m_windowHandle; - QSet<QObject *> m_hitTestVisibleItems; + QSet<const QObject *> m_hitTestVisibleItems; QList<QRect> m_hitTestVisibleRects; - QObject *m_titleBar{}; - std::array<QObject *, CoreWindowAgent::NumSystemButton> m_systemButtons{}; + const QObject *m_titleBar{}; + std::array<const QObject *, CoreWindowAgent::NumSystemButton> m_systemButtons{}; // Cached shape mutable bool hitTestVisibleShapeDirty{}; @@ -65,16 +65,16 @@ return m_windowHandle; } - inline bool AbstractWindowContext::isHitTestVisible(QObject *obj) const { + inline bool AbstractWindowContext::isHitTestVisible(const QObject *obj) const { return m_hitTestVisibleItems.contains(obj); } - inline QObject * + inline const QObject * AbstractWindowContext::systemButton(CoreWindowAgent::SystemButton button) const { return m_systemButtons[button]; } - inline QObject *AbstractWindowContext::titleBar() const { + inline const QObject *AbstractWindowContext::titleBar() const { return m_titleBar; } diff --git a/src/quick/quickwindowagent.cpp b/src/quick/quickwindowagent.cpp index 59949f2..80c10e3 100644 --- a/src/quick/quickwindowagent.cpp +++ b/src/quick/quickwindowagent.cpp @@ -41,12 +41,12 @@ return true; } - QQuickItem *QuickWindowAgent::titleBar() const { + const QQuickItem *QuickWindowAgent::titleBar() const { Q_D(const QuickWindowAgent); - return static_cast<QQuickItem *>(d->context->titleBar()); + return static_cast<const QQuickItem *>(d->context->titleBar()); } - void QuickWindowAgent::setTitleBar(QQuickItem *item) { + void QuickWindowAgent::setTitleBar(const QQuickItem *item) { Q_D(QuickWindowAgent); if (!d->context->setTitleBar(item)) { return; @@ -54,12 +54,12 @@ Q_EMIT titleBarWidgetChanged(item); } - QQuickItem *QuickWindowAgent::systemButton(SystemButton button) const { + const QQuickItem *QuickWindowAgent::systemButton(SystemButton button) const { Q_D(const QuickWindowAgent); - return static_cast<QQuickItem *>(d->context->systemButton(button)); + return static_cast<const QQuickItem *>(d->context->systemButton(button)); } - void QuickWindowAgent::setSystemButton(SystemButton button, QQuickItem *item) { + void QuickWindowAgent::setSystemButton(SystemButton button, const QQuickItem *item) { Q_D(QuickWindowAgent); if (!d->context->setSystemButton(button, item)) { return; @@ -67,12 +67,12 @@ Q_EMIT systemButtonChanged(button, item); } - bool QuickWindowAgent::isHitTestVisible(QQuickItem *item) const { + bool QuickWindowAgent::isHitTestVisible(const QQuickItem *item) const { Q_D(const QuickWindowAgent); return d->context->isHitTestVisible(item); } - void QuickWindowAgent::setHitTestVisible(QQuickItem *item, bool visible) { + void QuickWindowAgent::setHitTestVisible(const QQuickItem *item, bool visible) { Q_D(QuickWindowAgent); d->context->setHitTestVisible(item, visible); } diff --git a/src/quick/quickwindowagent.h b/src/quick/quickwindowagent.h index eb408ed..53e8652 100644 --- a/src/quick/quickwindowagent.h +++ b/src/quick/quickwindowagent.h @@ -21,19 +21,19 @@ public: bool setup(QQuickWindow *window); - QQuickItem *titleBar() const; - void setTitleBar(QQuickItem *item); + const QQuickItem *titleBar() const; + void setTitleBar(const QQuickItem *item); - QQuickItem *systemButton(SystemButton button) const; - void setSystemButton(SystemButton button, QQuickItem *item); + const QQuickItem *systemButton(SystemButton button) const; + void setSystemButton(SystemButton button, const QQuickItem *item); - bool isHitTestVisible(QQuickItem *item) const; - void setHitTestVisible(QQuickItem *item, bool visible = true); + bool isHitTestVisible(const QQuickItem *item) const; + void setHitTestVisible(const QQuickItem *item, bool visible = true); void setHitTestVisible(const QRect &rect, bool visible = true); Q_SIGNALS: - void titleBarWidgetChanged(QQuickItem *item); - void systemButtonChanged(SystemButton button, QQuickItem *item); + void titleBarWidgetChanged(const QQuickItem *item); + void systemButtonChanged(SystemButton button, const QQuickItem *item); protected: QuickWindowAgent(QuickWindowAgentPrivate &d, QObject *parent = nullptr); diff --git a/src/widgets/widgetwindowagent.cpp b/src/widgets/widgetwindowagent.cpp index 8f4a76d..e7068fb 100644 --- a/src/widgets/widgetwindowagent.cpp +++ b/src/widgets/widgetwindowagent.cpp @@ -42,12 +42,12 @@ return true; } - QWidget *WidgetWindowAgent::titleBar() const { + const QWidget *WidgetWindowAgent::titleBar() const { Q_D(const WidgetWindowAgent); - return static_cast<QWidget *>(d->context->titleBar()); + return static_cast<const QWidget *>(d->context->titleBar()); } - void WidgetWindowAgent::setTitleBar(QWidget *w) { + void WidgetWindowAgent::setTitleBar(const QWidget *w) { Q_D(WidgetWindowAgent); if (!d->context->setTitleBar(w)) { return; @@ -55,12 +55,12 @@ Q_EMIT titleBarWidgetChanged(w); } - QWidget *WidgetWindowAgent::systemButton(SystemButton button) const { + const QWidget *WidgetWindowAgent::systemButton(SystemButton button) const { Q_D(const WidgetWindowAgent); - return static_cast<QWidget *>(d->context->systemButton(button)); + return static_cast<const QWidget *>(d->context->systemButton(button)); } - void WidgetWindowAgent::setSystemButton(SystemButton button, QWidget *w) { + void WidgetWindowAgent::setSystemButton(SystemButton button, const QWidget *w) { Q_D(WidgetWindowAgent); if (!d->context->setSystemButton(button, w)) { return; @@ -68,12 +68,12 @@ Q_EMIT systemButtonChanged(button, w); } - bool WidgetWindowAgent::isHitTestVisible(QWidget *w) const { + bool WidgetWindowAgent::isHitTestVisible(const QWidget *w) const { Q_D(const WidgetWindowAgent); return d->context->isHitTestVisible(w); } - void WidgetWindowAgent::setHitTestVisible(QWidget *w, bool visible) { + void WidgetWindowAgent::setHitTestVisible(const QWidget *w, bool visible) { Q_D(WidgetWindowAgent); d->context->setHitTestVisible(w, visible); } diff --git a/src/widgets/widgetwindowagent.h b/src/widgets/widgetwindowagent.h index 791646a..cec5a88 100644 --- a/src/widgets/widgetwindowagent.h +++ b/src/widgets/widgetwindowagent.h @@ -20,19 +20,19 @@ public: bool setup(QWidget *w); - QWidget *titleBar() const; - void setTitleBar(QWidget *w); + const QWidget *titleBar() const; + void setTitleBar(const QWidget *w); - QWidget *systemButton(SystemButton button) const; - void setSystemButton(SystemButton button, QWidget *w); + const QWidget *systemButton(SystemButton button) const; + void setSystemButton(SystemButton button, const QWidget *w); - bool isHitTestVisible(QWidget *w) const; - void setHitTestVisible(QWidget *w, bool visible = true); + bool isHitTestVisible(const QWidget *w) const; + void setHitTestVisible(const QWidget *w, bool visible = true); void setHitTestVisible(const QRect &rect, bool visible = true); Q_SIGNALS: - void titleBarWidgetChanged(QWidget *w); - void systemButtonChanged(SystemButton button, QWidget *w); + void titleBarWidgetChanged(const QWidget *w); + void systemButtonChanged(SystemButton button, const QWidget *w); protected: WidgetWindowAgent(WidgetWindowAgentPrivate &d, QObject *parent = nullptr); -- Gitblit v1.9.1