非UI线程post到UI线程的一种简单办法–基于Qt | 知行一

非UI线程post到UI线程的一种简单办法–基于Qt

直接上代码,2.如果担心单例的多线程问题,可以在主线程里面初始化一下,或者自己改成线程安全的,如果编译器不支持c++11的bind+function,可以使用boost替代,如果支持,可以直接用c++11的bind+function替换

接下来是实现文件:

ps:1.qt_c_post_fun针对函数里有__cdecl的,这个用boost的时候,要定义一个宏,才能用
2.外部使用这四个函数:
void post_ui(qt_post_fun);
void post_c_ui(qt_c_post_fun);
void post_ui_block(qt_post_fun);
void post_c_ui_block(qt_c_post_fun);
带block的是阻塞的,比如弹消息框的时候,可以用到
post_ui(bind(widget::show,w));
post_ui_block(bind(showMsgBox,”Warngin”));

《非UI线程post到UI线程的一种简单办法–基于Qt》有3个想法

发表评论