From 4490a55f31ac82cc60b41466b5c4cec552dcd1e3 Mon Sep 17 00:00:00 2001 From: zcy <290198252@qq.com> Date: Wed, 19 Jan 2022 10:38:35 +0800 Subject: [PATCH] no message --- Qss.cpp | 32 ++++++++++++++++++++++++-------- Qss.h | 21 +++++++-------------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/Qss.cpp b/Qss.cpp index ce9f7c5..9ffae93 100644 --- a/Qss.cpp +++ b/Qss.cpp @@ -247,7 +247,6 @@ void QssMainWindow::OnMaxOrRestore(bool max) setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); this->m_frame->setMinimumSize(0, 0); this->m_frame->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); - QSize sizeHint = parentWidget()->sizeHint(); QDesktopWidget desktop; QRect rc = desktop.availableGeometry(-1); @@ -259,12 +258,23 @@ void QssMainWindow::OnMaxOrRestore(bool max) this->setFixedHeight(rc.height() - m_titleBar->height()); } } - -void QssMainWindow::DpiChange(qreal dpi) +// 实际测试切换分辨率会触发这个slot +void QssMainWindow::PhisycalDpiChange(qreal dpi) { - qDebug()<<"change dpi of QssMainWindow"<parentWidget(); + parent->setGeometry(parent->geometry().x(),parent->geometry().y(), + parent->geometry().width()*m_dpi_ratio, + parent->geometry().height()*m_dpi_ratio); +} QssMainWindow::QssMainWindow(QWidget *parent/* = 0*/, Qt::WindowFlags flags/* = 0*/,float scale) @@ -317,7 +327,11 @@ QssMainWindow::QssMainWindow(QWidget *parent/* = 0*/, Qt::WindowFlags flags/* = if(nullptr != mCurrentScreen){ connect(mCurrentScreen, SIGNAL(physicalDotsPerInchChanged(qreal)), - this,SLOT(DpiChange(qreal))); + this,SLOT(PhisycalDpiChange(qreal))); + + connect(mCurrentScreen, + SIGNAL(logicalDotsPerInchChanged(qreal)), + this,SLOT(LogicalDpiChange(qreal))); } rangeObjectList(m_frame,0); return; @@ -333,6 +347,11 @@ QWidget *QssMainWindow::TitleBar() return m_titleBar; } +void QssMainWindow::RangeObject() +{ + rangeObjectList(m_frame,0); +} + void QssMainWindow::DetectDpiChange() { int screenNum = qApp->desktop()->screenNumber(this); @@ -428,7 +447,6 @@ void QssMainWindow::showNormal() void QssMainWindow::setWindowTitle( QString title ) { - //m_frame->setWindowTitle(title); m_titleBar->setTitle(title); } @@ -467,8 +485,6 @@ void QssMainWindow::onMouseMoveEvent(QMouseEvent * ev) setCursorShape(CalCursorPos(ev->pos(),CalCursorCol(ev->pos()))); } QPoint ptCurrentPos = QCursor::pos(); - QPoint ptMoveSize = ptCurrentPos - m_ptViewMousePos; - QRect rtTempGeometry = this->geometry(); QRect rtCentralGeo = this->centralWidget()->geometry(); QRect rtMainWindow = this->geometry(); setCursor(Qt::ArrowCursor); diff --git a/Qss.h b/Qss.h index 38c0ad3..ffe926c 100644 --- a/Qss.h +++ b/Qss.h @@ -26,7 +26,9 @@ class QPushButton; class QLabel; class QMouseEvent; + #define STANDARD_DPI 96.0 + #ifndef WM_DPICHANGED #define WM_DPICHANGED 0x02e0 #endif @@ -108,19 +110,7 @@ class QssEventFilter { public: virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE - {/* - MSG* pMsg = reinterpret_cast(message); - if(nullptr != pMsg){ - switch (pMsg->message) - { - case WM_DPICHANGED: - { - qDebug()<<"DPI CHANGED"; - - } - } - }*/ - // TODO: filter out or modify msg struct here + { return false; } }; @@ -131,7 +121,9 @@ class QssMainWindow : public QMainWindow public slots: void OnMaxOrRestore(bool max); - void DpiChange(qreal); + void PhisycalDpiChange(qreal); + void LogicalDpiChange(qreal); + public: typedef enum{ EVENT_MOVE = 523, @@ -140,6 +132,7 @@ public: virtual ~QssMainWindow(); QWidget *TitleBar(); + void RangeObject(); void DetectDpiChange(); void ShowMask(); void HideMask();