Linux上Qt程序闪退的BUG

2019-07-12 22:09发布

问题现象

输出信息

[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 int main(int argc, char** argv) { //注意,这句一定要在QApplication的构造函数之前调用。 QCoreApplication::setAttribute(Qt::AA_X11InitThreads, true); //... }