c++ - 为什么 Qt 在加载窗口图标时会崩溃?

标签 c++ qt ubuntu

以下应用程序在 mainWindow->show();

上崩溃
#include <QApplication>
#include <QFrame>
#include <QPixmap>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Q_INIT_RESOURCE(resources);

    QPixmap pix;
    pix.load(":/resources/images/app/icon_glow.png");

    QFrame *mainWindow = new QFrame;
    mainWindow->setWindowIcon(QIcon(pix));
    mainWindow->show();

    return a.exec();
}

注释掉 mainWindow->setWindowIcon(QIcon(pix)); 后,一切正常。否则,回溯(SEGFAULT,试图取消引用 0x8;似乎某处缺少 nullptr 检查)是:

0   ??  /usr/local/Qt32/5.3/gcc/plugins/platforms/libqxcb.so        0xf4991138  
1   ??  /usr/local/Qt32/5.3/gcc/plugins/platforms/libqxcb.so        0xf4982d4c  
2   ??  /usr/local/Qt32/5.3/gcc/plugins/platforms/libqxcb.so        0xf498e7e3  
3   ??  /usr/local/Qt32/5.3/gcc/plugins/platforms/libqxcb.so        0xf498f0f4  
4   QWindowPrivate::applyCursor()   /usr/local/Qt32/5.3/gcc/lib/libQt5Gui.so.5      0xf7517942  
5   QWindowPrivate::setCursor(QCursor const*)   /usr/local/Qt32/5.3/gcc/lib/libQt5Gui.so.5      0xf75179f7  
6   QWindow::setCursor(QCursor const&)  /usr/local/Qt32/5.3/gcc/lib/libQt5Gui.so.5      0xf7517b16  
7   ??  /usr/local/Qt32/5.3/gcc/lib/libQt5Widgets.so.5      0xf7ad5d65  
8   QWidgetPrivate::show_sys()  /usr/local/Qt32/5.3/gcc/lib/libQt5Widgets.so.5      0xf7ad60b6  
9   QWidgetPrivate::show_helper()   /usr/local/Qt32/5.3/gcc/lib/libQt5Widgets.so.5      0xf7abab35  
10  QWidget::setVisible(bool)   /usr/local/Qt32/5.3/gcc/lib/libQt5Widgets.so.5      0xf7abb005  
11  QWidget::show() /usr/local/Qt32/5.3/gcc/lib/libQt5Widgets.so.5      0xf7aad77e  
12  main    main.cpp    17  0x804a21f   

我尝试按如下方式加载资源:

QLabel *mainLabel = new QLabel;
mainLabel->setPixmap(pix);
mainLabel->show();

这没有问题。任何帮助是极大的赞赏。 Ubuntu 14.04 x64,编译 32 位,Qt 5.3

更新:我重新安装了 ubuntu-desktop(我将桌面从 32 位恢复到 64 位),现在我收到一个错误:

The X11 connection broke: Maximum allowed requested length exceeded (code 4)
XIO:  fatal IO error 2 (No such file or directory) on X server ":0"
      after 409 requests (409 known processed) with 0 events remaining.

最佳答案

我也遇到过这种情况。原因是图标太大。调整为更小的尺寸,例如 256x256。

关于c++ - 为什么 Qt 在加载窗口图标时会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23901229/

相关文章:

qt - 无法将Opencv与Qt集成

c++ - 特定快捷方式不适用于 QT

ubuntu - Ubuntu文件服务器的性能问题

c++ - "using namespace"子句在什么范围内有效?

c++ - imshow 不工作

c++ - 验证 IPv6 网络掩码前缀

c++ - 当主线程无限循环运行时,服务器尚未接收到用 QTcpSocket::write 写入的字节?

linux - 文件保存错误 : "Opening output file: resource temporarily unavailable"

c++ - 在 Ubuntu 中学习 OpenGL

c++ - 演示static_cast的目的和用途呢?