Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2020-10-12 17:56:32 +08:00
parent 54f9a1ed4b
commit 54d208ec5c
4 changed files with 21 additions and 9 deletions

View File

@ -11,11 +11,7 @@
</rect>
</property>
<property name="styleSheet">
<string notr="true">#TitleBar {
border-top: 1px solid rgb(255, 255, 255);
}
#iconButton, #minimizeButton, #maximizeButton, #closeButton {
<string notr="true">#iconButton, #minimizeButton, #maximizeButton, #closeButton {
background-color: transparent;
border-radius: 0px;
}

View File

@ -25,6 +25,7 @@
#include "ui_MainWindow.h"
#include "ui_TitleBar.h"
#include <QApplication>
#include <QStyleOption>
#include <QWidget>
#ifdef Q_OS_WINDOWS
#include "../../winnativeeventfilter.h"
@ -35,10 +36,22 @@
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
// High DPI scaling is enabled by default from Qt 6
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
// Windows: we are using the manifest file to get maximum compatibility
// because some APIs are not supprted on old systems such as Windows 7
// and Windows 8. And once we have set the DPI awareness level in the
// manifest file, any attemptation to try to change it through API will
// fail. In other words, Qt won't be able to enable or disable high DPI
// scaling or change the DPI awareness level once we have set it in the
// manifest file. So the following two lines are uesless actually (However,
// they are still useful on other platforms).
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
// Don't round the scale factor.
// This will break QWidget applications because they can't render correctly.
// Qt Quick applications won't have this issue.
QGuiApplication::setHighDpiScaleFactorRoundingPolicy(
Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
#endif
@ -62,9 +75,6 @@ int main(int argc, char *argv[])
titleBarWidget.horizontalLayout->insertWidget(1, menuBar);
menuBar->setMaximumHeight(20);
titleBarWidget.iconButton->setIcon(mainWindow->windowIcon());
titleBarWidget.titleLabel->setText(mainWindow->windowTitle());
mainWindow->setMenuWidget(widget);
QObject::connect(mainWindow,
@ -95,6 +105,12 @@ int main(int argc, char *argv[])
}
});
QStyleOption option;
option.initFrom(mainWindow);
const QIcon icon = mainWindow->style()->standardIcon(QStyle::SP_ComputerIcon, &option);
mainWindow->setWindowIcon(icon);
mainWindow->setWindowTitle(QObject::tr("Hello, World!"));
#ifdef Q_OS_WINDOWS
WinNativeEventFilter::addFramelessWindow(mainWindow);
const auto data = WinNativeEventFilter::windowData(mainWindow);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -184,7 +184,7 @@ bool isWin10OrGreater(const int ver)
bool shouldHaveWindowFrame()
{
#if 1
#if 0
#if (QT_VERSION >= QT_VERSION_CHECK(5, 9, 0))
return QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows10;
#else