0

我正在开发一个 Qt5/QtQuick/QML 应用程序,当应用程序隐藏或失焦时,它应该使用 QxtGlobalShortcut 进行热键控制。我一直在 Linux 上使用 QtCreator 开发它,而且我对 Linux 开发并不完全熟悉,所以我可能错过了一些简单的东西。

首先,我尝试从这里克隆 Qxt git repo 的主分支。但是由于某种原因./configure未能根据我从makemake 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 元素。

4

1 回答 1

0

这是一个大问题:

INCLUDEPATH = usr/include

1)您使用的是当前工作目录的相对路径,而不是/usr/include文件系统的根目录。

2)您正在删除 INCLUDEPATH 中的所有内容,因为您设置而不是附加+=.

3) 无论如何都没有必要添加该行,因为默认情况下会查找 /usr/include。

4)即使不是,你也有#include "qxtglobal.h"代替#include <qxtglobal.h>.

我建议删除该行,然后它应该可以正常工作。

于 2014-05-23T02:35:25.313 回答