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

时间:2011-07-15 14:31:59

标签: c++ qt user-interface 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 |

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

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

1 个答案:

答案 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()函数也可以使用。