
回复:
Qt::BackgroundRole改成Qt::ForegroundRole,就是文字颜色(0,5)单元格就是indexcolumn()==5&&indexrow()==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((indexcolumn() + 1) 1000 + indexrow() + 1));
case Qt::BackgroundRole:
switch(indexcolumn() % 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();
}
}
QAbstractItemModel model = yourTableView->model ();
QModelIndex index = model->index(3,3);
QVariant data = model->data(index);
data可以根据需要转换为相应的QString,int等等数据类型,具体可以在Qt助手中输入QVariant 查看。
其实这个model是你自己定义的,在定义这个model的时候你留一个接口,能够通过行和列获取你的数据就行了,不一定非要依靠Qt的api。
一个需求是表格中只能填 0 到 18 的数字,因此通过委托来实现。
返回在 QTableView 中使用的控件,就在这边用正则限制输入的数据。
从指定的数据模型设置要由编辑器显示和编辑的数据
从 editor 小部件获取数据,并将数据存储在项目索引处的数据模型中。
根据给定的样式选项,更新 index 指定项的编辑器。
只有第一列表格中的数据只能输入 0-18 的数,不能输入英文符号等,而其他列都可以自由输入任意值。
qtableview中只显示选定的时间段内容的方法是使用sqlqure函数。QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件,实现了QAbstractItemView类定义的接口,以允许其显示从QAbstractItemModel类派生的模型提供的数据。
在课设的其中一个模块里,表格中只有一个字段的值是可编辑的,但百度上的一堆繁杂数据里并没有找到想要的答案。
原本想监控鼠标事件,当双击表格时,根据选中项所在列数判断是否可编辑,然后修改TableView的编辑标志为可编辑,当点击其它项时切回不可修改,到考虑到方向键可以切换选中项(Tab键切换可以禁用),而且没有对应的信号函数。所以可能会修改其他列的值。
最后只能退而求其次,使用我在MFC中用过的方法:
重开对话框,将表格中的数据打在对话框的编辑框内,调用exec()阻塞进程,待按下确认键后关闭对话框并将数据重新写入表格或者数据模型。
如果有更好的方法,欢迎在评论区留言。
以上就是关于QT中 使用QTableView显示数据库中的内容,双击单元格时编辑。但是要输入一定的格式:日期,IP格式怎么办全部的内容,包括:QT中 使用QTableView显示数据库中的内容,双击单元格时编辑。但是要输入一定的格式:日期,IP格式怎么办、如何获得qtableview viewprotentered、QT QTableView 使用委托等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)