漯河做网站推广,WordPress的固态链接,网站被k的怎么办,设计自己的专属logo前面的“QtConcurrent::run操作界面ui的注意事项#xff08;1#xff09;”#xff0c;末尾说了跨线程的问题#xff0c;引出了Qt千好万好#xff0c;就是跨线程不好。下面是认为的最简单的解决办法#xff1a;使用QMetaObject::invokeMethod#xff08;相比较信号-槽1”末尾说了跨线程的问题引出了Qt千好万好就是跨线程不好。下面是认为的最简单的解决办法使用QMetaObject::invokeMethod相比较信号-槽直接看源程序
// h 头文件中定义
public:Q_INVOKABLE void updateLabel(QString str); //必须添加Q_INVOKABLEQ_INVOKABLE void updateProgressBar(int v);// cpp 实现文件
void Widget::doSomeWork() //子线程函数
{int k0;while(1){QThread::msleep(100);QString strQString::asprintf(当前%d, k);QMetaObject::invokeMethod(this,updateLabel,Q_ARG(QString, str)); //在线程里更新labelQMetaObject::invokeMethod(this,updateProgressBar,Q_ARG(int, k)); //在线程里更新progressBar}
}//按钮事件里开启一个线程
void Widget::on_pushButton_clicked()
{QFuturevoid future QtConcurrent::run(this,Widget::doSomeWork);
}void Widget::updateLabel(QString str) //更新label控件
{ui-label-setText(str);
}void Widget::updateProgressBar(int v) //更新进度条控件
{ui-progressBar-setValue(v);
}