Пользовательский интерфейс в Qt 41

Пользовательский интерфейс в Qt

QML и C++: как правильно прокидывать данные через Q_PROPERTY

Введение Связь между QML-интерфейсом и логикой на C++ — основа практически любого нетривиального Qt Quick приложения. Механизм Q_PROPERTY позволяет объявить свойство C++-класса так, что оно становится доступным из…

Пользовательский интерфейс в Qt

Кастомные виджеты в Qt Widgets: наследование от QWidget и paintEvent

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

Пользовательский интерфейс в Qt

Адаптивная верстка в QML: Layouts, anchors и масштабирование под разные экраны

Введение Qt Quick приложения часто должны работать на экранах самых разных размеров и соотношений сторон — от мобильных телефонов до настольных мониторов. QML предоставляет два взаимодополняющих механизма для…

Пользовательский интерфейс в Qt

Темная и светлая тема в Qt-приложении: QPalette и динамическое переключение

Введение Поддержка тёмной и светлой темы стала ожидаемым стандартом для десктопных приложений — пользователи рассчитывают, что приложение либо следует системной теме ОС, либо позволяет переключаться вручную. В Qt…

Пользовательский интерфейс в Qt

Модели данных в QML: QAbstractListModel на практике

Введение Для отображения динамических списков данных в QML (через ListView, GridView, Repeater) недостаточно простого JS-массива, когда данные приходят с сервера, регулярно обновляются или требуют эффективной работы с большими…

Пользовательский интерфейс в Qt

Кастомная отрисовка таблиц: QStyledItemDelegate на практике

Введение Стандартное отображение ячеек в QTableView/QListView (через модель и стандартный делегат) подходит для простого текста, но когда нужна нестандартная визуализация — цветные индикаторы статуса, рейтинг звёздами, прогресс-бары прямо…

Пользовательский интерфейс в Qt

Drag-and-Drop в Qt Widgets: перетаскивание элементов между виджетами

Введение Перетаскивание элементов мышью между разными частями интерфейса (или даже между разными приложениями) — привычный паттерн взаимодействия, который пользователи интуитивно ожидают для списков, файлов, элементов канбан-доски. Qt Widgets…

Пользовательский интерфейс в Qt

QML + C++ singleton: как сделать глобальный объект доступным во всех QML-файлах

Введение Некоторые объекты — менеджер сетевых запросов, глобальные настройки приложения, текущий авторизованный пользователь — логически существуют в единственном экземпре и должны быть доступны из любого QML-файла без необходимости…

Пользовательский интерфейс в Qt

Виртуализация списков в QML: ListView, делегаты и производительность на больших данных

Введение Когда список содержит тысячи или десятки тысяч элементов, наивное создание визуального делегата для каждого элемента сразу привело бы к колоссальному расходу памяти и деградации производительности. ListView в…

Пользовательский интерфейс в Qt

Кастомные шейдеры в QML через ShaderEffect: простые визуальные эффекты

Введение Для визуальных эффектов, которые нельзя получить комбинацией стандартных QML-элементов (свечение, искажение, кастомное смешивание цветов, процедурные паттерны), QML предоставляет ShaderEffect — элемент, позволяющий применить собственный шейдер, написанный на…