我正在开发一个 Qt5/QtQuick/QML 应用程序,当应用程序隐藏或失焦时,它应该使用 QxtGlobalShortcut 进行热键控制。我一直在 Linux 上使用 QtCreator 开发它,而且我对 Linux 开发并不完全熟悉,所以我可能错过了一些简单的东西。
首先,我尝试从这里克隆 Qxt git repo 的主分支。但是由于某种原因./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 路径或其他问题引起的,但即使尝试将我的项目的 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 元素。