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了
回复:Qt::BackgroundRole改成Qt::ForegroundRole,就是文字颜色.(0,5)单元格就是index.column()==5&&index.row()==0
subclass你的Model,重载data、setData函数,以data()为例:
QVariant MyTestModel::data(const QModelIndex &index, int role) const
{
switch(role)
{
case Qt::DisplayRole:
return QVariant(QString(tr("%1")).arg((index.column() + 1) * 1000 + index.row() + 1))
case Qt::BackgroundRole:
switch(index.column() % 3)
{
case 0:
return QVariant(QColor(Qt::red))
case 1:
return QVariant(QColor(Qt::green))
case 2:
return QVariant(QColor(Qt::blue))
default://only to disable warning
return QVariant(QColor(Qt::white))
}
break
default:
return QVariant()
}
}
并在其上调度了" Reshape"方法(例如,将3x3矩阵扩展为4x4,其尺寸由2个QLineEdit组件设置),并自动将此更改反映到视图上,不能选择n次调用" insertRow()"。对于初学者来说,使用QTableWidget更加容易。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)