Spec-Zone.ru › Qt

Изменения в Qt GUI

Qt 6 — результат целенаправленных усилий по повышению эффективности и удобства использования фреймворка.

Мы стараемся поддерживать бинарную и исходную совместимость всех публичных API в каждом релизе. Но некоторые изменения были неизбежны в стремлении сделать Qt лучшим фреймворком.

В этой статье мы обобщаем изменения в Qt GUI и предоставляем руководство по их обработке.

Ядерные классы

Класс QBitmap

Неявное создание QBitmap из QPixmap больше не поддерживается. Конструктор и оператор присваивания стали явными и помечены как устаревшие. Используйте новую статическую функцию-фабрику fromPixmap вместо этого.

Класс QCursor

Неявное создание QCursor из QPixmap больше не поддерживается, конструктор стал явным.

Класс QKeyCombination

QKeyCombination — новый класс для хранения сочетания клавиши с необязательной модификацией. Его следует использовать в качестве замены для объединения значений из перечисления Qt::Key с модификатором безопасным способом.

Рекомендуется мигрировать код, который в настоящее время использует оператор+() для объединения клавиши и модификаторов, так как будущие стандарты C++ могут объявить арифметические операции между несвязанными типами перечислений незаконными. Используйте оператор|(), и измените API, ожидающие int, на ожидание QKeyCombination вместо этого.

Существующие API, которые ожидают int для сочетания клавиш, могут быть вызваны с помощью QKeyCombination::toCombined().

Текстовые классы

Класс QFontDatabase

Класс QFontDatabase теперь содержит только статические члены-функции. Конструктор устарел. Вместо, например:

const QStringList fontFamilies = QFontDatabase().families();

используйте

const QStringList fontFamilies = QFontDatabase::families();

Класс QFont

Числовые значения перечислителя QFont::Weight были изменены в соответствии со значениями начертания OpenType. QFont::setWeight() ожидает значение перечисления вместо int, и код, вызывающий установщик с целым числом, не будет компилироваться. Чтобы продолжить использование старых значений целых чисел, используйте QFont::setLegacyWeight().

Классы рисования

См. руководство по портированию для Поддержки печати Qt для получения информации о QPagedPaintDevice и других классах, связанных с печатью.

Классы утилит

QIntValidator и QDoubleValidator

Метод setRange() больше не помечен как виртуальный.

Классы OpenGL

С введением Qt RHI в качестве основы отрисовки в Qt, большинство классов, начинающихся с QOpenGL, были перемещены в модуль Qt OpenGL.

Дополнительные сведения можно найти в руководстве по портированию Qt OpenGL.

Заметным исключением является класс QOpenGLContext, который по-прежнему находится в Qt GUI.

Кроме того, класс QOpenGLWidget был перемещен в новый модуль, названный Qt OpenGL Widgets.

Класс QOpenGLContext

Функция QOpenGLContext::versionFunctions() заменена на QOpenGLVersionFunctionsFactory::get(). QOpenGLVersionFunctionsFactory — теперь публичный класс, часть модуля Qt OpenGL.

ANGLE

В Windows ANGLE, сторонний переводчик OpenGL ES в Direct 3D, больше не включен в Qt. Это означает, что Qt::AA_UseOpenGLES и переменная среды QT_OPENGL=angle больше не оказывают никакого эффекта. В динамических сборках OpenGL не происходит автоматического перехода к ANGLE в случае, если OpenGL не удалось инициализировать. Для приложений, использующих OpenGL напрямую, на основе QWindow или QWidget, например, с помощью QOpenGLWidget, это означает, что OpenGL — единственный вариант во время выполнения. Однако альтернатива использования чистой программной реализации OpenGL, такой как Mesa llvmpipe, поставляемая с предварительно собранными пакетами Qt, по-прежнему доступна. Для приложений Qt Quick и Qt Quick 3D Qt 6 добавляет поддержку Direct 3D 11, Vulkan и Metal, помимо OpenGL. В Windows по умолчанию выбирается Direct 3D, поэтому удаление ANGLE смягчается поддержкой графических API, отличных от OpenGL.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/gui-changes-qt6.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API