【发布时间】:2016-01-18 20:04:02
【问题描述】:
我是第一次使用 QT,在添加元素时刷新 GUI 时遇到了一些问题。
代码如下:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PObj obj;
MainWindow mw;
qRegisterMetaType<std::string>();
QObject::connect(&obj, SIGNAL(setText(std::string const&)),
&mw, SLOT(appendText(std::string const&)));
QFuture<void> f1 = QtConcurrent::run(&obj, &PObj::process);
mw.show();
f1.waitForFinished();
return a.exec();
}
使用 PObj::process 定义:
void PObj::process()
{
for(; ;)
{
sleep(1);
//do work and set text
std::string text = "bla";
emit setText( text );
}
}
还有 MainWindow::appendText 槽:
void MainWindow::appendText(std::string const& str )
{
ui->listWidget->addItem(QString::fromStdString(str));
}
我试过放置 qApp->processEvents() ,QCoreApplication::processEvents(); ... 在 ThreadPool 中运行机智的未来。
我认为使用 Concurrent::run 运行它们就足够了?
更新:
问题是,为什么 GUI 不是每秒刷新一个新项目?
【问题讨论】:
-
@hyde,你说得对,我编辑了问题
标签: qt