void QTableWidget::setCellWidget(int row, int column, QWidget *widget)
void QListWidget::setItemWidget(QListWidgetItem *item, QWidget *widget)
从定义看成,不但可以添加常用控件(button,progressbar等等),也可以添加任何Qwidget(当然可以包含多个控件)
Qt帮助翻译:此函数(QListWidget::setItemWidget)只能用于在列表小部件项的位置显示静态内容。如果希望显示自定义动态内容或实现自定义编辑器小部件,请使用QListView和子类QItemDelegate。
所以,一般静态显示,一些简单交互操作,这两个函数还是可以胜任的;
2、例
定义一个QWidget,无边框:
用setItemWidget加入到Qlistwidget里,显示的样子大致如下,
3、表格里的控件与父窗口交互
简单的Qt自带控件,如button、bar等,用控件的property,保存控件所在的item或其他信息,但有些变量需要注册、强制转换等;
复杂的Qwidget保存在私有变量里,更方便;不需要注册、强制转换。
4、欢迎大家讨论!
5、QTableview也一样可以添加复杂QWidget,用setIndexWidget
void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget)