Qt QItemDelegate与自定义视图小部件
Qt 5.5有一个虚拟方法来定义编辑模式的自定义小部件:Qt QItemDelegate与自定义视图小部件,qt,qt5,model-view,qitemdelegate,Qt,Qt5,Model View,Qitemdelegate,Qt 5.5有一个虚拟方法来定义编辑模式的自定义小部件: QWidget*createEditor(QWidget*parent,常量QStyleOptionViewItem&option,常量QModelIndex&index)常量 但是如何使用自定义小部件覆盖“查看”模式呢? 我看到了“stars rating”代表示例,其中使用了paint方法,但这不是我需要的。我需要显示一个包含其他标准小部件的自定义小部件,并在QTableView或QListView的视图模式下使用它。不需要绘制指针
QWidget*createEditor(QWidget*parent,常量QStyleOptionViewItem&option,常量QModelIndex&index)常量
但是如何使用自定义小部件覆盖“查看”模式呢?
我看到了“stars rating”代表示例,其中使用了paint
方法,但这不是我需要的。我需要显示一个包含其他标准小部件的自定义小部件,并在QTableView
或QListView
的视图模式下使用它。不需要绘制指针和图形,只需显示一个自定义小部件(具有.ui文件)并包含其他标准小部件及其行为
例如:
有一个下载管理器应用程序,可以将下载显示为表或列表视图<代码>QListView和下载列表。每次下载都有URL、标题、TotalSize、DownloadedSize、进度条、暂停按钮、删除按钮、恢复按钮。所有这些都可以是表中的列(QTableView
),也可以是一个单元格中类似于HTML的DIV的列(QListView
小部件)
如何实现?是否有类似于QWidget*createViewer(…
)的东西
QTWidget不使用QML。对于静态内容,您可以使用
QAbstractItemView::setIndexWidget
对于动态内容,唯一的选择是在委托类中实现
paint
方法。为什么它应该是处于查看模式的小部件?@vahancho非常常见的示例-QListView,其中包含下载列表。每次下载都有URL、标题、TotalSize、DownloadedSize、ProgressBar、Pause按钮、Remove按钮、Resume按钮。所有这些都可以e表中的列(QTableView)或组成类似于一个单元格中HTML的DIV的列(QListView小部件)。您可以尝试使用QListWidget
和QListWidget::openPersistentEditor()
函数在查看模式下显示编辑器。