#include <QtSingleApplication>
编译错误:
../untitled/main.cpp:3:10: fatal error: 'QtSingleApplication' file not found
#include <QtSingleApplication>
^
1 error generated.
make: *** [main.o] Error 1
我错过了什么?
补充资料
项目文件已设置QT += widgets
我已经谷歌,似乎需要qtlocalpeer.cpp,qtlocalpeer.h,qtsingleapplication.cpp, qtsingleapplication.h,qtsinglecoreapplication.cpp,qtsinglecoreapplication.h
,但如何生成这些文件?
有些帖子说需要包含qtsingleapplication.pri
,但它在哪里?我搜索了我的磁盘,我找不到它。
QtSingleApplication Class Reference
Sample by Qt但是在哪里下载源代码?
答案 0 :(得分:5)
如果您正在寻找QtSingleApplication
课程的更好替代方案,尤其是Qt5
和QtQuick
,请查看我的SingleApplication实施方案。它使用QSharedMemory
来确保不会出现竞争条件,并且非常易于使用。您只需将QApplication
的号码替换为SingleApplication
,如下所示:
#include "singleapplication.h"
int main(int argc, char *argv[])
{
QApplication::setApplicationName("{Your App Name}");
QApplication::setOrganizationName("{Your Organization Name}");
SingleApplication app(argc, argv);
return app.exec();
}
它还使用本地套接字通知您的原始(第一个)进程初始化新的进程,以便父进程可以引发它的窗口。要唯一标识本地套接字的程序,我使用指定的Organization Name
和Application Name
。
由于实现独立于 Qt Application类,因此可以通过QCoreApplication
宏轻松更改为QGuiApplication
或QAPPLICATION_CLASS
。
完整文档和代码可在GitHub上找到:itay-grudev/SingleApplication
答案 1 :(得分:4)
QtSingleApplication不是Qt的官方部分,而是一个如果人们感兴趣的话就与它一起发布的课程。 (所有“ Qt解决方案”都是其他类,实际上并不是官方Qt库的一部分)
它不仅不是Qt的一部分,而且Qt现在是第5版,它依赖于已弃用的Qt4函数。您可能需要自己编写,或修改其他人的代码。 Here would be a good place to start。 Qt Solutions Archive中可能还有更新版本。
要问的一个重要问题是:您的应用真的是否希望强制用户 永远不会拥有多个一次运行的应用程序副本?
这样做只是因为它很酷并不会对用户有益。您正在删除Windows中内置的非常好的功能,妨碍您的应用程序的使用 - 所以在决定它是您真正想要添加的内容之前请仔细考虑! 最好添加功能,而不是删除它们,除非在这种情况下你无法提供帮助。如果你无法帮助它,无论这个成本的哪些功能,损失,都会让用户更有价值! =)
答案 2 :(得分:0)
QtSingleApplication现已移植到Qt 5:
https://github.com/qtproject/qt-solutions/tree/master/qtsingleapplication