Qt 5.5 имеет виртуальный метод для определения пользовательского виджета для режима редактирования:
QWidget *createEditor(QWidget *parent,const QStyleOptionViewItem & option ,const QModelIndex & index ) const
Но как использовать пользовательский виджет для переопределения режима «просмотра»? Я видел пример делегата «звездный рейтинг», где используется метод paint
, но это не то, что мне нужно. Мне нужно показать пользовательский виджет, который содержит внутри себя другие стандартные виджеты, и использовать его в режиме просмотра QTableView
или QListView
. Не нужно возиться с рисованием указателей и рисунков — просто покажите пользовательский виджет (который имеет файл .ui) и содержит другие стандартные виджеты с их поведением.
Например: Существует приложение менеджера загрузок, которое может отображать загрузки в виде таблицы или списка. QListView
со списком загрузок. Каждая загрузка имеет URL-адрес, заголовок, общий размер, загруженный размер, индикатор выполнения, кнопку «Пауза», кнопку «Удалить», кнопку «Возобновить». Все они могут быть столбцами в таблице (QTableView
) или составлены аналогично HTML DIV в одной ячейке (виджет QListView
).
Как этого добиться? Есть ли что-нибудь похожее на QWidget *createViewer(...
?
QtWidgets не используются без QML.
QListWidget
иQListWidget::openPersistentEditor()
, чтобы отобразить редактор в режиме просмотра. - person vahancho   schedule 27.10.2015