【问题标题】:How use kde libraries in qt?如何在qt中使用kde库?
【发布时间】:2018-06-23 15:44:24
【问题描述】:

对不起,我的英语不好。 如何在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 终止(地址边界错误)

提前致谢。

【问题讨论】:

  • 我再次搜索,发现LIBS += -lkdeui是kde4的,必须是LIBS += -lKF5WindowSystem

标签: qt kde-plasma


【解决方案1】:

我再次搜索,发现 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: 找不到任何平台插件

现在有什么问题? 谢谢。

【讨论】:

    【解决方案2】:

    尝试将 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 在 e.g. 下安装开发包debian 也不是直截了当的。

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2014-02-03
      • 1970-01-01
      • 2011-05-27
      • 2013-11-15
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      相关资源
      最近更新 更多