我第一次使用QT,並添加元素時刷新GUI的一些問題。QT添加項目觸發器重畫,而不是凍結
代碼如下:
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 ::流程定義:
void PObj::process()
{
for(; ;)
{
sleep(1);
//do work and set text
std::string text = "bla";
emit setText(text);
}
}
而且主窗口:: AppendText通過插槽:
void MainWindow::appendText(std::string const& str)
{
ui->listWidget->addItem(QString::fromStdString(str));
}
我試着放置qApp-> processEvents(),QCoreApplication :: processEvents(); ...在ThreadPool中運行智能未來。
我以爲用Concurrent :: run運行它們就足夠了嗎?
UPDATE:
是,爲什麼第二一個新項目添加問題心不是刷新一次,圖形用戶界面?
@hyde,你是對的我編輯問題 – Roby