Russian Qt Forum

Qt => Model-View (MV) => Тема начата: sergek от Январь 21, 2022, 11:34



Название: Делегат - всплывающая подсказка
Отправлено: sergek от Январь 21, 2022, 11:34
Коллеги,
в программе (конфигуратор системы) используется QTableView для работы с различными табличными данными. Один пример отображаемых данных я привел во вложении.
Для некоторых колонок используются делегаты типа QComboBox, которые заполняются из различных справочников (для каждой таблицы используются свои справочники). В приведенном примере делегат используется для колонки "Тип переменной".

Но для некоторых полей, связанных с справочниками, иногда удобнее работать с кодами (например, в колонке "Тип устройства"). Но хочется иметь возможность быстро посмотреть описание этого значения, например, в виде всплывающей подсказки. В модель (для роли Qt::ToolTipRole) это тащить не хочется - она у меня универсальная для всех таблиц. Оптимальным решением был бы делегат в виде всплывающей подсказки, но как его реализовать, я не придумал. Вы можете что-нибудь посоветовать?


Название: Re: Делегат - всплывающая подсказка
Отправлено: qtkoder777 от Январь 21, 2022, 19:22
У комбобокса разве нет метода установки подсказки?
В реализации делегата воспользуйтесь этим методом.


Название: Re: Делегат - всплывающая подсказка
Отправлено: sergek от Январь 21, 2022, 21:10
Есть, конечно. Я такой вариант рассматривал: в paint делегата отрисовывать исходные данные, т.е. число (QStyledItemDelegate::paint(painter, option, index)), а на виджет делегата повесить подсказку. Но, во-первых, без активизации (перевод в поля режим редактирования) комбобокса подсказка не работает. А если его активировать, то и подсказка не нужна - и так отображается то, что мне нужно в подсказке.