请原谅我的英语不好。 如何在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(地址边界错误)终止
提前致谢。
答案 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的文档非常差。