Qt ModelView教程(二)——应用举例(一)

栏目: IT技术 · 发布时间: 5年前

内容简介:点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多老铁~上次和大家分享了Qt Model/View只读表的方法,简单回顾下:因为是为一个Table设置

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多老铁~

上次和大家分享了Qt Model/View只读表的方法,简单回顾下:

因为是为一个Table设置 Model ,为了快速入门,我们选择继承 QAbstractTableModel 。继承后需要重写三个函数,分别是 Model 的行数和列数、以及每个 Cell 需要显示的内容。

这次和大家分享Qt Model/View教程的几个其他例子。

一、  使用 Roles 属性扩展只读 Table

怎么扩展?扩展些什么?

上次的示例中我们是在role == Qt::DisplayRole时进行的显示,那么扩展时是不是有其他 Roles 属性?

具体扩展的内容,是不是也根据这些Roles呢?答案是肯定的。

无需更改其他任何内容即可设置字体,背景色,对齐方式和复选框等属性,其他属性可请参阅Qt名称空间文档以了解有关 Qt :: ItemDataRole 枚举功能的更多信息。

在上次的程序基础上添加BackgroundRole属性,如下:

case Qt::BackgroundRole:

if (row == 1 && col == 2) //change background only for cell(1,2)

return QBrush(Qt::red);

break;

效果如下:

Qt ModelView教程(二)——应用举例(一)

这里面值得注意的是调用data()函数的频率,具体可打印效果进行查看,一次可以判断使用分离的模型如何影响应用程序的性能。还有就是当鼠标悬浮在 Cell 时,都会对 data() 进行调用。

二、  Cell 中显示时钟

回顾之前的操作,View都是自动将数据与属性显示出来的,并且在特定条件下进行“更新显示”,如将鼠标悬浮在 Cell 上时;那么我们如何主动让 Model 更新数据呢—— Model 可以接收数据变化的信号,从而进行响应。 Ok ,下面看具体的例子 :

接下来扩展的是在单元格中每 一秒显示一次当前的时间。

我们要考虑的几个问题:

如何产生一个更新时间的计数器?

如何将信号发送给Model进行更新?

直接看代码:

①使用 QTimer 进行计数,溢出时响应如下:

void MyModel::slot_updateTime()

{

QModelIndex topLeft = createIndex(0,0);

emit dataChanged(topLeft, topLeft);


}

将具体的Cell信息发送出去即可。

DisplayRole 属性设置

int row = index.row();

int col = index.column();


if (role == Qt::DisplayRole)

{

if (row == 0 && col == 0)

{

return QTime::currentTime().toString();

}

}

效果如下:

Qt ModelView教程(二)——应用举例(一)

小结:本次主要和大家分享一下data()函数中其他属性的应用以及如何通过信号更新 Cell 数据。下次和大家分享下在 Model 中如何设置行列标题以及如何设置 Table 的可编辑属性。

学不可以已,积少成多!

欢迎大家关注公众号,定期分享编程中的小知识。

Qt ModelView教程(二)——应用举例(一)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入浅出Ext JS

深入浅出Ext JS

何启伟、徐会生、康爱媛 / 人民邮电出版社 / 2010-5 / 69.00元

以用户为中心的时代,应用的界面外观变得越来越重要。然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易。Ext JS的出现,为广大程序员解决了这一难题。它有丰富多彩的界面和强大的功能,是开发具有炫丽外观的RIA应用的最佳选择。 本书是《深入浅出Ext JS》的升级版,涵盖了最新发布的Ext JS 3.2新特性,并对上一版的内容进行增补,充实了示例代码,同时补充了两个功能强大的实例。......一起来看看 《深入浅出Ext JS》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具