带有QPushButton的动态窗口小部件列表,QComboBox QCheckbox

Ner*_*olm 2 c++ user-interface qt qt4

我想创建一个列表,此列表中的每一行包含:

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 |
Run Code Online (Sandbox Code Playgroud)

这个列表是动态的,我总共有36个模型,但是根据已经做出的选择,只能选择这些模型.用户可以后悔任何先前的选择并重新绘制此列表.

我一直在看QListView,QTableWidget,Delegates,但我似乎无法找到关于如何将QPushButton实现到QListView或QTableWidget的任何示例或问题.查看QItemDeligate QPushButton的文档不属于可接受的类型.

Chr*_*ris 5

我相信您正在寻找以下功能之一(取决于您正在使用的视图类):

QTableWidget::setCellWidget( int, row, int column, QWidget *widget );
QTreeWidget::setItemWidget( QTreeWidgetItem *item, int column, QWidget *widget );
QListWidget::setItemWidget( QListWidgetItem *item, QWidget *widget );
Run Code Online (Sandbox Code Playgroud)

这将允许您在所需位置显示任意小部件,不需要代理.

请注意,这些函数仅在这些视图的"Widget"版本中可用(例如,QTreeWidget而不是QTreeView).但是,QAbstractItemView中还有一个setIndexWidget()函数也可以使用.