我用Qt开发一个应用,子线程中有一个需要用户UI交互,提示用户是否继续次操作。
Qt不是线程安全,所以我用信号。请问有没有阻塞的。我现在做法很猥琐,用的一个变量,等UI选择后再将这个变量置为,让子线程继续运行。简单的代码如下:
bool bRun = false;
void ThreadFun()///子线程
{
........//代码
bRun = false;
connect(this,SIGNAL(UserChouse),uiThread,SLOT(UIFun));
while(!bRun){}///////如果UI已经选择则继续
.........//执行后面的代码
}
void Dlg::UIFun()////UI线程
{
......//代码
bRun = true;
}
------解决方案--------------------
都是这样弄的吧,想玩专业点用QSemaphore或者QMutex来控制。
------解决方案--------------------
QWaitCondition好像更适合一些。
------解决方案--------------------
用QSemaphore的 acquire(int)函数,获取不到时是阻塞的
------解决方案--------------------
俺也是这么玩的呢

------解决方案--------------------
类似于MFC的SendMessage的是SendEvent;PostMessage是PostEvent
------解决方案--------------------
Qdialog 可以设置为窗口阻塞windowmodel,和应用阻塞applicationmodel,后者不知道没不能满足你的需求