在table(0,0)中是实现电子表功能(接上一个Demo)

显示时间很简单:

case Qt::DisplayRole : //展示
        if(row == 0 && column == 0) 
            return QTime::currentTime().toString();

问题在于如何让他每秒都会刷新。

解决方案是,定时器 , 信号/槽。

添加槽函数:void timerHit()

void StringListModel::timerHit()
{
    qDebug()<<"SLOT 被触发";
    QModelIndex topLeft = createIndex(0,0);
    //发一个信号给view让它重新如这个数据
    emit dataChanged(topLeft,topLeft);

然后在构造函数中设置定时器,并关联槽函数。

    QTimer *timer = new QTimer(this);
    timer->setInterval(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(timerHit()));
    timer->start();

这里遇见一个错误显示

No such slot QAbstractListModel::timerHit() in …

搞了半天 最后发现 在类里加上 Q_OBJECT 就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值