使用 QItemDelegate 在 QTableView 中显示其他数据
我有一个与 QSqlTableModel 连接的 QTableView。
在第一列中,只有以下格式的日期:2010-01-02
我希望此列以这种格式显示日期(但不更改实际数据):02.01.2010
我知道我必须为此列创建一个 QItemDelegate,但我不知道如何读取现有数据并用不同的内容覆盖它。你知道如何管理吗?
I have a QTableView connected with an QSqlTableModel.
In the first column, there are only dates at this format: 2010-01-02
I want this column to show the date at this format (but without changing the real data): 02.01.2010
I know that I have to create an QItemDelegate for this column, but I don't know how I can read the existing data and overwrite it with something different. You have any idea how to manage that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的解决方案是创建一个
QStyledItemDelegate
子类并重新实现displayText(...)
ie然后在你的视图中 -
The simplest solution is to create a
QStyledItemDelegate
subclass and reimplementdisplayText(...)
ieThen in your view -
项目委托不一定会更改数据,它只是呈现数据。另外,如果您使用的是 Qt 4.4 或更高版本,请查看 QStyledItemDelegate ——它具有主题感知功能并且看起来会更好。
这篇文章中有一个项目委托的示例(这似乎是官方文档的镜像现已关闭或消失)。
由于您真正想做的只是自定义文本,因此您是否考虑过使用代理模型并仅返回日期列的 DisplayRole 的自定义 QString?
An item delegate doesn't necessarily change the data, it just renders the data. Also, if you're using Qt 4.4 or newer, look at QStyledItemDelegate instead--it's theme-aware and will look nicer.
There's an example of item delegates in this article (which seems to be a mirror of official documentation that is now down or gone).
Since all you really want to do is customize the text, have you considered using a proxy model instead and just returning your custom QString for the date column's DisplayRole?