如何在qt中使用kde库?

时间:2017-03-07 14:17:04

标签: qt kde

请原谅我的英语不好。 如何在qt中使用kde库? 我搜索并谷歌这个但没有好的答案。 cpp文件

#include <QCoreApplication>
#include <QDebug>
#include <KDE/KWindowSystem>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "Hello World";
//  bool wayland = KWindowSystem::isPlatformWayland();
//  qDebug() << wayland;
//  KWindowSystem::self();
    foreach (const auto &wid, KWindowSystem::self()->stackingOrder())      {
        qDebug() << "Hi";
    }
    return a.exec();
}

专业档案

######################################################################
# Automatically generated by qmake (3.1) Tue Mar 7 02:09:59 2017
######################################################################

TEMPLATE = app
TARGET = firstqt
INCLUDEPATH += /usr/include/KF5/KWindowSystem .

# Input
SOURCES += main.cpp
LIBS += -lkdeui

我收到错误: fish:“。/ firstqt”由信号SIGSEGV(地址边界错误)终止

提前致谢。

2 个答案:

答案 0 :(得分:0)

我再次搜索,我发现LIBS + = -lkdeui用于kde4,它必须是LIBS + = -lKF5WindowSystem 现在我的代码是 main.cpp中

#include <QCoreApplication>
#include <KWindowSystem>
#include <QDebug>

// using KWallet::Wallet;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    for(int i = 0; i < KWindowSystem::stackingOrder().count(); i++)
    {
        qDebug() << "Hi";
    }
    return a.exec();
}

和main.pro是

TARGET = wallet
TEMPLATE = app
SOURCES += main.cpp
LIBS += -lKF5WindowSystem
INCLUDEPATH += /usr/include/KF5/KWindowSystem \

和kwindowsystem已经识别,但这只会打印一个警告:

org.kde.kwindowsystem:找不到任何平台插件

现在有什么问题? 感谢。

答案 1 :(得分:0)

尝试将QCoreApplication更改为QApplication。 看来,您必须明确声明您正在编写一个应用程序(而不是kde的插件)。 对我来说,以下代码可以正常工作:

#include <QApplication>
#include <KWindowSystem>
#include <iostream>

int main (int argc, char *argv[])
{
  QApplication app(argc, argv);
  QList<WId> stackingOrder = KWindowSystem::stackingOrder();

  for ( auto wid : stackingOrder ) {
    std::cout << "wid=" << wid << std::endl;
  }

  return 0;
}

编译如下:

g++ -std=c++11 -fPIC -I/usr/include/KF5/KWindowSystem ./test.cpp -o test
`pkg-config --libs --cflags Qt5Widgets` -lKF5WindowSystem

我的印象是,关于kde5 / plasma的文档非常差。

The only tutorial for beginners I could find

对于更复杂的情况,您必须直接查看code_1或/和code_2 在以下情况下安装开发包debian也不简单。