diff --git a/Qss.cpp b/Qss.cpp index 395a5e0..805d09d 100644 --- a/Qss.cpp +++ b/Qss.cpp @@ -6,14 +6,14 @@ #include #include #include -#include #include #include #include #include #include #include -#include +#include +#include #include "windows.h" #include "winuser.h" #include @@ -112,7 +112,7 @@ QssTtitleBar::QssTtitleBar(QWidget *parent , connect(m_restoreBtn, SIGNAL(clicked()), this, SLOT(onMaxOrRestore())); - m_rcValid = QApplication::desktop()->availableGeometry(); + m_rcValid = QGuiApplication::primaryScreen()->availableGeometry(); setWindowFlags(windowFlags()|Qt::MSWindowsFixedSizeDialogHint); this->setGeometry(parent->geometry().x(),parent->geometry().y(),0,0); @@ -178,10 +178,9 @@ void QssTtitleBar::onMaxOrRestore() } void QssTtitleBar::paintEvent(QPaintEvent *) { - QStyleOption opt; - opt.init(this); + QStyleOption opt(); QPainter p(this); - style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); + // style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } void QssTtitleBar::mouseMoveEvent( QMouseEvent * ev ) @@ -267,8 +266,7 @@ void QssMainWindow::OnMaxOrRestore(bool max) this->m_frame->setMinimumSize(0, 0); this->m_frame->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); - QDesktopWidget desktop; - QRect rc = desktop.availableGeometry(-1); + QRect rc = QGuiApplication::primaryScreen()->availableGeometry(); parentWidget()->setGeometry(rc); rc.setRight(rc.right() - 50); @@ -316,7 +314,7 @@ QssMainWindow::QssMainWindow(QWidget *parent/* = 0*/, Qt::WindowFlags flags/* = m_tray_on(false) { QEvent::registerEventType(); - m_rcValid = QApplication::desktop()->availableGeometry(); + m_rcValid = QGuiApplication::primaryScreen()->availableGeometry(); m_frame = new QFrame(parent, flags); m_frame->setObjectName("window"); @@ -332,7 +330,6 @@ QssMainWindow::QssMainWindow(QWidget *parent/* = 0*/, Qt::WindowFlags flags/* = m_titleBar->SetMainWindow(this); QVBoxLayout* vbox = new QVBoxLayout(m_frame); vbox->addWidget(m_titleBar); - vbox->setMargin(1); vbox->setSpacing(0); vbox->addWidget(this); @@ -354,18 +351,7 @@ QssMainWindow::QssMainWindow(QWidget *parent/* = 0*/, Qt::WindowFlags flags/* = mShadowMask->setStyleSheet("QWidget{background-color:rgba(1,1,1,0.3);}"); mShadowMask->hide(); - int screenNum = qApp->desktop()->screenNumber(this); - mCurrentScreen = qApp->screens().at(screenNum); - if(nullptr != mCurrentScreen){ - connect(mCurrentScreen, - SIGNAL(physicalDotsPerInchChanged(qreal)), - this,SLOT(PhisycalDpiChange(qreal))); - connect(mCurrentScreen, - SIGNAL(logicalDotsPerInchChanged(qreal)), - this,SLOT(LogicalDpiChange(qreal))); - } - detectDpi(); return; } @@ -406,16 +392,7 @@ void QssMainWindow::RangeObject() rangeObjectList(m_frame,0); } -void QssMainWindow::DetectDpiChange() -{ - int screenNum = qApp->desktop()->screenNumber(this); - auto currentScreen = qApp->screens().at(screenNum); - if(currentScreen != mCurrentScreen){ - qDebug()<<"dpi change,reason screen changed"; - mCurrentScreen = currentScreen; - } -} void QssMainWindow::ShowMask() { @@ -883,7 +860,7 @@ bool QssMainWindow::eventFilter(QObject * obj, QEvent * ev){ } } if(QEvent::Resize == ev->type()){ - QDesktopWidget desktop; + } if(QEvent::Close == ev->type()){ qDebug()<<"close"; @@ -944,7 +921,7 @@ QssDialog::QssDialog(QWidget *parent) m_parent(parent), m_mousePressedInBorder(false) { - m_rcValid = QApplication::desktop()->availableGeometry(); + m_rcValid = QGuiApplication::primaryScreen()->availableGeometry(); m_frame = new QFrame(parent); m_frame->setObjectName("dialog");//css @@ -957,7 +934,6 @@ QssDialog::QssDialog(QWidget *parent) m_titleBar->installEventFilter(this); QVBoxLayout* vbox = new QVBoxLayout(m_frame); - vbox->setMargin(0); vbox->setSpacing(0); vbox->addWidget(m_titleBar); vbox->addWidget(this); @@ -987,6 +963,7 @@ void QssDialog::HideMask() void QssDialog::show() { + /** resize m_framem_framesizehint */ int offset = (QSSDIALOG_SHADOW_WIDTH + QSSDIALOG_BODER_WIDTH)*2; m_frame->resize(rect().width() + offset, rect().height() + m_titleBar->rect().height() + offset); @@ -997,7 +974,6 @@ void QssDialog::show() void QssDockWidget::paintEvent(QPaintEvent *){ QStyleOption opt; - opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } @@ -1330,7 +1306,7 @@ QssMessageBox::QssMessageBox( Icon icon, const QString &title, const QString &te Qt::WindowFlags flags /*= Qt::Widget | Qt::FramelessWindowHint*/ ) :QMessageBox(icon, title, text, buttons, 0, flags),m_parent(parent) { - m_rcValid = QApplication::desktop()->availableGeometry(); + m_rcValid = QGuiApplication::primaryScreen()->availableGeometry(); m_frame = new QFrame; m_frame->setObjectName("messagebox");//css @@ -1350,7 +1326,7 @@ QssMessageBox::QssMessageBox( Icon icon, const QString &title, const QString &te m_titleBar->setIcon(style()->standardIcon((QStyle::StandardPixmap)(icon + 8))); QVBoxLayout* vbox = new QVBoxLayout(m_frame); - vbox->setMargin(0); +// vbox->setMargin(0); vbox->setSpacing(0); vbox->addWidget(m_titleBar); vbox->addWidget(this); @@ -1361,7 +1337,7 @@ QssMessageBox::QssMessageBox( Icon icon, const QString &title, const QString &te QssMessageBox::QssMessageBox( QWidget *parent /*= 0*/ ) :QMessageBox(parent),m_parent(parent) { - m_rcValid = QApplication::desktop()->availableGeometry(); + m_rcValid = QGuiApplication::primaryScreen()->availableGeometry(); m_frame = new QFrame; m_frame->setObjectName("messagebox");//css @@ -1374,7 +1350,7 @@ QssMessageBox::QssMessageBox( QWidget *parent /*= 0*/ ) m_titleBar->installEventFilter(this); QVBoxLayout* vbox = new QVBoxLayout(m_frame); - vbox->setMargin(0); +// vbox->setMargin(0); vbox->setSpacing(0); vbox->addWidget(m_titleBar); vbox->addWidget(this); @@ -1688,7 +1664,7 @@ QssDockWidget::QssDockWidget(QWidget *parent) m_parent(parent), m_mousePressedInBorder(false) { - m_rcValid = QApplication::desktop()->availableGeometry(); + m_rcValid = QGuiApplication::primaryScreen()->availableGeometry(); m_frame = new QFrame(parent); m_frame->setObjectName("dialog");//css @@ -1701,7 +1677,7 @@ QssDockWidget::QssDockWidget(QWidget *parent) m_titleBar->installEventFilter(this); QVBoxLayout* vbox = new QVBoxLayout(m_frame); - vbox->setMargin(0); +// vbox->setMargin(0); vbox->setSpacing(0); vbox->addWidget(m_titleBar); vbox->addWidget(this); @@ -1993,7 +1969,7 @@ QssMaskWidget::QssMaskWidget(QWidget *parent) this->installEventFilter(this); QPalette palette = this->palette(); - palette.setBrush(QPalette::Background, QColor(0,0,0)); + palette.setBrush(QPalette::ColorRole::Dark, QColor(0,0,0)); this->setPalette(palette); this->setWindowOpacity(0.5);//设置窗口透明度 this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());//去掉标题栏 @@ -2073,19 +2049,3 @@ void QSSASyncProcess::Run(void *) } -uint16_t CurrentDPI(QWidget* widget,int monitor) -{ - float dpi = 1.0; - int screenNum = qApp->desktop()->screenNumber(widget); - qDebug()<<"current screen number is "<screens(); - for(int i = 0;i < screens.size();i++){ - if(screenNum >= 0){ - QScreen* screen = qApp->screens().at(i); - dpi = screen->physicalDotsPerInch(); - qDebug()<physicalDotsPerInch()<physicalDotsPerInchX()<physicalDotsPerInchY(); - qDebug()<logicalDotsPerInch()<logicalDotsPerInchX()<logicalDotsPerInchY(); - } - } - return dpi; -} diff --git a/Qss.h b/Qss.h index 8c6f04f..f316994 100644 --- a/Qss.h +++ b/Qss.h @@ -13,6 +13,7 @@ #include #include #include +#include #include "ui_qsstoast.h" #include "ui_process.h" @@ -42,7 +43,6 @@ public: }; // 获取当前dpi -uint16_t CurrentDPI(QWidget* widget,int monitor); class QssTtitleBar : public QWidget { @@ -113,7 +113,7 @@ class QssEventFilter : public QAbstractNativeEventFilter { public: - virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE + virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) { return false; } @@ -133,12 +133,12 @@ public: typedef enum{ EVENT_MOVE = 523, } EVENT_CUSTOM; - QssMainWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0,float scale = 1); + QssMainWindow(QWidget *parent = 0, Qt::WindowFlags flags = Qt::Window, + float scale = 1); virtual ~QssMainWindow(); void AdapteDpi(); QWidget *TitleBar(); void RangeObject(); - void DetectDpiChange(); void ShowMask(); void HideMask(); void show(); @@ -429,6 +429,7 @@ public: int Start(void*); QThread &Thread(); signals: + void Info(QString); void DonePercent(int); void Done(); void StartRun(void *);