显示时间很简单:
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 就好了。