红联Linux门户
Linux帮助

Linux上Qt程序闪退的BUG

发布时间:2017-07-10 16:04:20来源:linux网站作者:snail_hunan
问题现象
输出信息
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that
 
问题背景
我把一个Qt的Windows程序,移植到Linux上,然后稍微操作一下界面,就出现程序闪退,然后有上面输出。
 
原因分析
这个日志输出已经说明问题了。说你在用一个多线程程序,而XInitThreads没被调用。
 
解决办法
由于我这里是Qt程序,所以需要调用Qt的内容,去调用XInitThreads。
#include <Qt>
int main(int argc, char** argv)
{
//注意,这句一定要在QApplication的构造函数之前调用。
QCoreApplication::setAttribute(Qt::AA_X11InitThreads, true);
//...
}
 
本文永久更新地址:http://www.linuxdiyf.com/linux/31910.html