我有一个QTableView
小部件,它在QStandardItemModel
. 在每两秒钟内,包含这两个类的函数被调用 usingQTimer
并给出接下来的 50 个条目。
该函数每两秒后正常运行,但显示的窗口中的值没有刷新。
提前感谢您的帮助。
代码 :
void Box::create_frame()
{
k=0;
tablegroup = new QGroupBox(tr("Table"));
QVBoxLayout *layout = new QVBoxLayout;
table = new QTableView(this);
table->setUpdatesEnabled(false);
cout << "recent check" <<endl;
QStandardItemModel *mode = new QStandardItemModel(1,2,this);
mode->setHorizontalHeaderItem(0, new QStandardItem(QString("ID")));
mode->setHorizontalHeaderItem(1, new QStandardItem(QString("DATA")));
map<int,QString>::iterator it;
for(it=dataa.begin();it!=dataa.end();it++)
{
for(int i=0;i<=1;i++)
{
QStandardItem *item;
item = new QStandardItem();
item->setEditable(true);
if(i==0)
{
item->setData(((*it).first), Qt::DisplayRole);
mode->setItem(k,i,item);
}
else
{
item->setData(((*it).second), Qt::DisplayRole);
mode->setItem(k,i,item);
}
}
k++;
}
//setUpdatesEnabled(false);
table->setUpdatesEnabled(true);
cout << "create frame check" << endl;
table->setModel(mode);
layout->addWidget(table);
tablegroup->setLayout(layout);
}
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(refresh()));
timer->start(2000);
}
void dataThread::run()
{
boost::posix_time::seconds delay(2);
int g=0;
int h=50;
while(1)
{
while(g<h)
{
dataa.insert(pair<int,QString>(g+1,"HELLO"));
g++;
}
boost::this_thread::sleep(delay);
h=h+50;
}
}