Используя Qt5.6.1, я использую QtWinMigrate для размещения виджета Qt в родительском окне. Когда родитель приложение масштабируется высокой точек на дюйм монитор, следующую строку:Создание QApplication изменяет размер родительского (не-Qt-окно) при высоком разрешении на дюйм на мониторе 4k
pApp = new QApplication(argc, argv);
убивает масштабирование, изменение размера родительского окна, так что 150% или 200% масштабирование, по-видимому подскакивает до 100%. Это до того, как я даже создал свое окно Qt - только конструктор QApplication делает это. Я пробовал разные трюки. Файл qt.conf так:
[Platforms]
WindowsArguments = dpiawareness=0,1,2
или до создания QApplication:
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication::setDesktopSettingsAware(true);
Ни один из них не кажется, чтобы иметь эффект. Как я могу предотвратить это изменение размера?
Как бы то ни было, я выделяю QApplication в куче, потому что, как я уже упоминал, это размещенная Dll в другом приложении, а функция инициализации возвращается родительскому после создания QApplication. Помимо того, что глобальная реализация QApplication будет проблематичной несколькими способами, выделение ее стеком приведет к ее удалению после инициализации. – Roderick
@Roderick, вы все равно можете выделить объект приложения в стеке, пока цикл цикла будет запущен в этом потоке, но вы должны убедиться, что поток завершает цикл до его уничтожения. – AlexanderVX
Это не так, как эта конкретная реализация работает по причинам, слишком многочисленным и вне темы для обсуждения здесь. Это не очень актуально, проблема в том, что Qt распознает настройку конфигурации. – Roderick