Qt Widget частично обрезан из-за изменения настроек дисплея P C - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть QDialog в приложении Qt фиксированного размера. Когда «масштаб и компоновка» в настройках дисплея p c изменяется со 100% до 150%, виджет частично обрезается.

Вот код:

void windowsDpiScale()
{

    const HDC hDC = GetDC(NULL);
    const int dpiX = GetDeviceCaps(hDC, LOGPIXELSX);
    const int dpiY = GetDeviceCaps(hDC, LOGPIXELSY);
    ReleaseDC(NULL, hDC);

    // Perform the scaling.
    MulDiv(100, dpiX, 96);
    MulDiv(100, dpiY, 96);
}
int main()
{
    windowsDpiScale();
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); //HiDPI pixmaps
    QApplication main_application(argc, argv);
}

Я также попытался установить qputenv ("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); и QGuiApplication :: setDesktopSettingsAware (false); но это не помогло. Я использую Qt версии 5.8. Любые предложения о том, как я могу исправить пользовательский интерфейс, чтобы масштаб, текст и другие элементы системных настроек не менялись?

1 Ответ

0 голосов
/ 12 февраля 2020

Использование макетов и отсутствие фиксированных размеров или позиций для дочерних виджетов или виджета верхнего уровня решит эти проблемы, если вы правильно их реализуете. Большинство проблем с типом, который вы видите, заключается в том, что вы не использовали систему разметки Qt.

Смотрите this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...