我想创建一个列表,此列表中的每一行都包含:
LineNo | Edit Model | Model Select | Log enabl | freq | selection |
1 | QPushButton | QComboBox | QCheckBox | QLineEdit | QLineEdit |
2 | QPushButton | QComboBox | QCheckBox | QLineEdit | QLineEdit |
3 | QPushButton | QComboBox | QCheckBox | QLineEdit | QLineEdit |
| | | | | | |
n | QPushButton | QComboBox | QCheckBox | QLineEdit | QLineEdit |
这个列表是动态的,我总共有36个模型,但是根据已经做出的选择,只能选择这些模型。用户可以后悔任何先前的选择并重新绘制此列表。
我一直在关注QListView,QTableWidget,Delegates,但我似乎无法找到关于如何将QPushButton实现到QListView或QTableWidget的任何示例或问题。查看QItemDeligate QPushButton的文档不属于可接受的类型。
答案 0 :(得分:5)
我相信你正在寻找以下功能之一(取决于你正在使用的视图类):
QTableWidget::setCellWidget( int, row, int column, QWidget *widget );
QTreeWidget::setItemWidget( QTreeWidgetItem *item, int column, QWidget *widget );
QListWidget::setItemWidget( QListWidgetItem *item, QWidget *widget );
这将允许您在所需位置显示任意小部件,不需要代理人。
请注意,这些功能仅在这些视图的“Widget”版本中可用(例如QTreeWidget而不是QTreeView)。但是QAbstractItemView中还有一个setIndexWidget()函数也可以使用。