如何在QTableView中的一列或一行上添加控件

如何在QTableView中的一列或一行上添加控件,第1张

首先,创建一个combobox代理

class ComboDelegate : public QItemDelegate

{

Q_OBJECT

public:

ComboDelegate(QObject *parent = 0)

QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const

void setEditorData(QWidget *editor, const QModelIndex &index) const

void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const

void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const

}

实现里面声明的方法,具体参考帮助文档。

然后,在表中,为某一列设置代理

比如,第二列

pComboDelegate = new ComboDelegate()

pTable->setItemDelegateForColumn(1, pComboDelegate)

这样,每行的第二列,需要编辑时,双击,就会出现combobox了

可以,你可以参考assitant中的说明

void QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget)

Sets the widget to be displayed in the given item.

This function should only be used to display static content in the place of a list widget item. If you want to display custom dynamic content or implement a custom editor widget, use QListView and subclass QItemDelegate instead.

上面的翻译:

该函数应该只用来在一个list widget item位置显示静态内容。如果你想要显示自定义动态内容或实现一个自定义编辑控件,使用QListView和子类化QItemDelegate代替。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8022006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存