Я работаю над приложением Qt5 / QtQuick / QML, которое должно использовать QxtGlobalShortcut для управления горячими клавишами, когда приложение скрыто или не в фокусе. Я разрабатывал его с помощью QtCreator для Linux, и я не совсем знаком с разработкой для Linux, поэтому, возможно, я упустил что-то простое.
Во-первых, я попытался клонировать главную ветвь репозитория Qxt. отсюда. Но по какой-то причине ./ Configure не удалось создать make-файл из-за ошибки, полученной от делать а также сделать установку. Я не очень опытен в создании чужих проектов / библиотек из исходного кода, а также из того, что я получал. ./ Configure не был достаточно конкретным для меня, чтобы выяснить, что происходит ..
Поэтому вместо этого я решил захватить libqxt-DEV из (X) репозитория Ubuntu APT. После того, как он закончил установку, я добавил эти строки в конец моего файла проекта 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
Я думаю, что это вызвано проблемой в пути моего проекта ВКЛЮЧИТЬ или что-то, но даже попытавшись изменить мои проекты, ВКЛЮЧИТЕ путь к этому:
INCLUDEPATH = usr/include
usr/include/qxt/QxtCore
usr/include/qxt/QxtGui
CONFIG += qxt
QXT += core gui
Я все еще получаю то же сообщение об ошибке, что QxtGlobal.h (который #include в QxtGlobalShortcut.h) не может быть найден..
Итак, я действительно не уверен, что сделал неправильно, и у меня нет идей о том, как это исправить.
Надеюсь, кто-то может помочь мне понять, какой шаг я пропустил, чтобы я мог продолжить кодирование! Спасибо!
РЕДАКТИРОВАТЬ: Вот что у меня есть для всего моего .pro проекта Qt:
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 для моего проекта. Я добавил элементы LIBS, CONFIG и QXT в соответствии с инструкциями пользователя для SDL2 и Qxt.
Это большая проблема здесь:
INCLUDEPATH = usr/include
1) Вы используете относительный путь из текущего рабочего каталога, поэтому не /usr/include
из корня файловой системы.
2) Вы удаляете все в INCLUDEPATH, потому что вы устанавливаете, а не добавляете с +=
,
3) Нет необходимости добавлять эту строку, так как / usr / include будет найден по умолчанию.
4) Даже если это не так, у вас есть #include "qxtglobal.h"
вместо #include <qxtglobal.h>
,
Я бы предложил удалить эту строку, и тогда она должна просто работать.