使用QSQLTableModel和QTableView显示数据,怎么是某列不可编辑

cliffordl 2014-05-08 05:42:52
使用QSQLTableModel和QTableView显示数据库内容,可以设置不可编辑,但是一旦设置就是整张表都不可编辑,请问各位用什么方法,可以使某一列不可编辑,其他的列还可以编辑。

用其他方法实现也可以,求助。。
...全文
1412 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeway 2016-07-31
  • 打赏
  • 举报
回复
可以继承一个托管类,实现QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;方法,方法里返回NULL。最后ui->tableview->setItemDelegateForColumn(0,new NoEditDelegate()); 头文件: class NoEditDelegate:public QStyledItemDelegate { public: NoEditDelegate(QObject *parent=0); ~NoEditDelegate(); // QAbstractItemDelegate interface public: QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; }; cpp文件: NoEditDelegate::NoEditDelegate(QObject *parent) { } NoEditDelegate::~NoEditDelegate() { } QWidget *NoEditDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { return NULL; }
嵌入梦想 2014-11-19
  • 打赏
  • 举报
回复
引用 楼主 cliffordl 的回复:
使用QSQLTableModel和QTableView显示数据库内容,可以设置不可编辑,但是一旦设置就是整张表都不可编辑,请问各位用什么方法,可以使某一列不可编辑,其他的列还可以编辑。 用其他方法实现也可以,求助。。
请问您写的这个东西是什么意思呢??能具体说说吗?新手看不太懂。
嵌入梦想 2014-11-19
  • 打赏
  • 举报
回复
我也碰到了同样的问题,理论来说,可以通过重载QSqlTabelModel类的data函数实现,但是我重载了以后,发现并没有达到要显示的效果。同样可以修改,只是修改方式变了,现在在想到底Qt::EditRole对应那些属性值,比如NoEditTrigger。什么的。
yun_xingtianxia 2014-09-19
  • 打赏
  • 举报
回复
for(int i = 0; i<this->m_pTableItem->rowCount();i++) { this->m_pTableItem->item(i, 1)->setFlags(Qt::NoItemFlags); }

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧