【问题标题】:KStatusNotifierItem instantiation crashes QtKStatusNotifierItem 实例化使 Qt 崩溃
【发布时间】:2018-10-22 18:23:27
【问题描述】:

我正在使用带有 Qt 5.11 的 Ubuntu Unity 17.04,并且在实例化 KStatusNotifierItem 时遇到了 Qt 崩溃的问题。

这是我的包含文件:

QT += widgets

HEADERS       =    
SOURCES       = main.cpp

# LIBS
LIBS += -lkdeui

# install
target.path = $$[HOME]/KSNITester
INSTALLS += target

这是我的来源:

#include <QApplication>
#include "kstatusnotifieritem.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    KStatusNotifierItem * statusItem = new KStatusNotifierItem();
    return a.exec();
}

当我运行时,我得到一个 SIGSEGV 并且程序崩溃:

Starting /home/anshah/KSNITester/KSNITester...
The program has unexpectedly finished.
The process was ended forcefully.
/home/anshah/KSNITester/KSNITester crashed.

请告诉我如何解决此问题。

【问题讨论】:

  • libkdeui 是 Qt4 的东西,你打算使用它吗?
  • 我用的是Qt5...是不是和Qt5不兼容?
  • 不,使用 KNotifications 框架。

标签: qt segmentation-fault kde


【解决方案1】:

main.cpp:

#include <QApplication>
#include <QWidget>
#include <KStatusNotifierItem>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;

    KStatusNotifierItem *sni = new KStatusNotifierItem(&window);
    sni->setCategory(KStatusNotifierItem::ApplicationStatus);
    sni->setIconByName("face-smile");
    sni->setTitle("KStatusNotifierItem Demo");

    window.show();

    return app.exec();
}

.pro 文件:

TEMPLATE = app
TARGET = ksnidemo
QT += widgets dbus KNotifications
SOURCES += main.cpp

【讨论】:

  • 您使用哪个 Qt 版本?我在 Qt 5.11 上崩溃了。
  • 我也在使用 Qt 5.11。如果它崩溃了,你可能还在 Qt4 材料中链接。检查您安装了哪些 -dev 软件包。如果这没有帮助,请通过 gdb 向我们展示崩溃的回溯。
  • 您是否有关于彻底卸载并重新安装 Qt 的说明?我已经做了几次,剩下的残留物。重新安装后我会重试。
  • 另外,只是确保您使用的是带有 Unity Desktop 的 Ubuntu 17.04 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-29
  • 2012-02-27
  • 2017-02-11
  • 2010-09-08
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多