4

我想创建一个需要全局快捷方式的小应用程序。所以,我下载了当前版本的 libqxt (0.5.1) 并在 Qt Creator 中作为项目打开。

Libqxt 以这种方式编译没有问题,所以我认为在我的项目的选项卡依赖项中添加它会自动添加到构建中,就像 Eclipse 对 JAR 库所做的那样(我知道这是不同的 IDE,但它似乎是一个常见的其中的特征)。

怎么了?Qt Creator 在需要时在我的项目之前编译 qxt,但是当我想包含它的头文件时,Qt Creator 一直警告我它找不到它们。

可能我错过了正确的标题名称(我尝试了 qxt 文档中显示的标题:http: //doc.libqxt.org/0.5.0/classQxtGlobalShortcut.html

顺便说一句,我查看了全局快捷方式的代码,我想我可以把它撕下来并按原样在我的应用程序中使用它,我要感谢 qxt 团队并打开我的应用程序的代码。

4

2 回答 2

11

从文档

将以下行添加到您的 .pro 文件中:

 CONFIG  += qxt
 QXT     += core gui

注意:在 Linux 上构建 Qxt 时不要忘记做一个,sudo make install否则这个小魔法可能会失效。

于 2010-05-08T09:53:59.590 回答
6

Qt Creator 不知道如何向您的项目公开不同的库。这是开发商的职责。依赖关系确保在构建主项目之前只构建提到的项目。

您真正关心的是在没有正确安装的情况下使用 Qxt。假设configure已运行并libqxt已构建(使用 Qt Creator 或手动通过qmake+ make),我的解决方案是将以下代码段(具有明显的 QXT_DIR 自定义)添加到 .pro 文件:

QXT_DIR = $${IN_PWD}/../libqxt-0.5.1
LIBS += -L$${QXT_DIR}/deploy/libs
INCLUDEPATH += $${QXT_DIR}/deploy/include
for(module, QXT) {
 MODNAME = $$upper($$replace(module, "(.).*", "\1"))$$replace(module, "^.", "")
 INCLUDEPATH += $${QXT_DIR}/deploy/include/Qxt$${MODNAME}
 INCLUDEPATH += $${QXT_DIR}/src/$${module}
 win32:CONFIG(debug, debug|release):MODNAME = $$join(MODNAME,,,d)
 LIBS += -lQxt$${MODNAME}
}

不幸的是,我不确定它是否适用于复杂的项目。

默认情况下,Qxt 在发布模式下构建,但 Qt Creator 使用调试模式,它会导致项目的二进制文件损坏,具体取决于 Windows 下的 Qxt。您必须将项目切换到发布模式或在调试模式下构建 Qxt(运行configure -debug并重新构建 Qxt)。

最后一件事:在 Windows 中,即使您成功构建项目,您也无法从 Qt Creator 运行项目。您必须将所需Qwt*.dll的文件(d如果您处于调试模式,请使用 -suffix 版本)从libqxt-0.5.1/deploy/libsdirectory复制your_project/(release|debug)

于 2010-01-02T13:16:48.087 回答