Qt Designer: как исправить несоответствие размера экрана - PullRequest
0 голосов
/ 10 июля 2019

Я работаю над программой в QT Creator, а также в QT Designer.Это мой первый опыт работы с семьей QT, и я работаю над этим уже около 3 недель.Я должен разработать множество меню для исследования, для которого мне было поручено сделать это.

Я использую встроенное перетаскивание QT Designer / QT Creator, чтобы создавать самые большие фрагменты, а затем использую код для изменения некоторых вещей во время выполнения (некоторые метки расширенного текста изменяются после пользовательского ввода, дляпример).Моя проблема в том, что я работаю над настройкой с двумя мониторами.Один монитор имеет разрешение 1920 на 1080, а другой - 3840 на 2160. Когда я перетаскиваю запущенную программу с экрана 1920/1080 на другой, размеры просто уходят в ад.Текст в LineEdit обрезается, и часто ярлыки просто закручиваются.

Я использую проект "QT Widget Application" в качестве основы в QT Creator, и все формы пользовательского интерфейса представляют собой файлы .ui, а не файлы .qml.У меня уже есть значительная часть этого, поэтому мне нужно либо сохранить все в .ui, исправляя это, либо найти простой способ конвертировать в лучший формат и решить проблему.

Что очень странно, так этоЭкран предварительного просмотра QT Designer формы выглядит одинаково на обоих экранах.Я могу перетащить предварительный просмотр главного меню между экраном 1920/1080 и экраном 3840/2160, и там есть только очень незначительные изменения.Между тем, запущенная программа в QT Creator имеет огромное несоответствие внешнего вида в зависимости от экрана.

Вот изображение, которое, надеюсь, лучше объяснить, визуально:

the image.

ЭтиЭто всего лишь два экрана печати, обрезанные, чтобы показать одну из вещей, которая меняется.Верхняя половина - это запущенная программа, а нижняя - предварительный просмотр, оба на одном экране с одинаковым размером экрана (развернуто).Я пытался изменить horizontalStretch и verticalStretch для различных элементов в Designer, но он все еще не работает.

Возможно, это проблема новичка, но на самом деле я новичок в QT.Я просто пытаюсь убедиться, что независимо от размера экрана, на котором мы запускаем эту программу, она выглядит одинаково, несмотря ни на что.

1 Ответ

0 голосов
/ 10 июля 2019

Похоже на проблему, связанную с виджетом themes в Qt.

Qt Designer показывает предварительный просмотр формы, используя стиль fusion, но при запуске вашей программы Qt выберет лучшее соответствие для вашей платформы. Это может объяснить различия, которые вы видите. Вы можете переопределить это поведение, применяя стиль слияния.

Редактировать: Другая вещь, которую вы можете попробовать, - включить поддержку рендеринга на экране Hi-DPI, если она еще не установлена. Просто добавьте эту строку в вашу основную функцию следующим образом:

QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication::setStyle(QStyleFactory::create("Fusion")); // these lines before the next
QApplication a(argc, argv);

Вам нужно будет добавить #include <QStyleFactory> сверху, чтобы оно заработало.

...