我正在使用Qt5 / QtQuick / QML应用程序,当应用程序被隐藏或失焦时,它应该使用QxtGlobalShortcut进行热键控制。我在Linux上使用QtCreator开发它,我并不完全熟悉Linux开发,所以我可能错过了一些简单的东西。
首先,我尝试克隆Qxt git repo from here的主分支。但由于某种原因, ./ configure 无法根据我从 make 和 make install 获得的错误创建一个makefile。我从源代码构建其他人的项目/库方面不是很有经验,而我从 ./configure 获得的输出对我来说还不够具体。发生了什么......
相反,我决定从(X)ubuntu的APT回购中获取 libqxt-dev 。安装完成后,我将这些行添加到QtCreator项目文件的底部:
INCLUDEPATH = usr/include
CONFIG += qxt
QXT += core gui
在完全基于Qxt文档的示例设置基本全局快捷方式之后。我收到了一些编译错误。首先,Qxt似乎使用:
#include <QxtGlobalShortcut>
但QtCreator无法找到该文件,因此我将其更改为:
#include <qxt/QxtGui/QxtGlobalShortcut>
现在它可以找到Global Shortcut类标题,QtCreator不再对我抱怨。不幸的是,在编译时,QtCreator出现了这条错误消息:
/usr/include/qxt/QxtGui/qxtglobalshortcut.h:28: error: qxtglobal.h: No such file or directory
我认为这是由我项目的INCLUDE路径中存在的问题造成的,但即使尝试更改我的项目,也包括以下路径:
INCLUDEPATH = usr/include
usr/include/qxt/QxtCore
usr/include/qxt/QxtGui
CONFIG += qxt
QXT += core gui
我仍然得到相同的错误消息,即无法找到QxtGlobal.h(在QxtGlobalShortcut.h中#included)。 所以,我真的不确定自己做错了什么,而且我对如何解决这个问题提出了异议。 希望有人可以帮助我理解我跳过的步骤,以便我可以继续编码!谢谢!
编辑:这是我对整个Qt项目.pro文件的所有内容:
TEMPLATE = app
QT += qml quick
SOURCES += main.cpp \
Gamepad.cpp \
Script.cpp \
System.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Default rules for deployment.
include(deployment.pri)
HEADERS += \
Gamepad.h \
Script.h \
System.h
LIBS += -L/usr/lib -lSDL2
CONFIG += qxt
QXT += core gui
LIBS之前的所有内容都是由QtCreator为我的项目自动生成的。我根据SDL2和Qxt的用户说明添加了LIBS,CONFIG和QXT元素。
答案 0 :(得分:0)
这是一个很大的问题:
INCLUDEPATH = usr/include
1)您正在使用当前工作目录的相对路径,因此不是/usr/include
来自文件系统的根目录。
2)您正在删除INCLUDEPATH中的所有内容,因为您设置的不是附加+=
。
3)无论如何都不必添加该行,因为默认会查找/ usr / include。
4)即使不是,也有#include "qxtglobal.h"
而不是#include <qxtglobal.h>
。
我建议删除该行,然后才能正常工作。