如何在QTableView中的一列或一行上添加控件
1个回答
推荐于2018-04-13 · 知道合伙人互联网行家
关注
展开全部
首先,创建一个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了
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了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询