首页 > 技术知识 > 正文

Qt程序单例运行

可执行文件正常情况下是可以打开多个,多个同时运行,但是有些情况下必须只可以单例运行。 Qt程序单例运行的实现方法:使用qtsingleapplication。

qtsingleapplication位置:

Qtsingleapplication在Qt的安装路径下可以找到。 本地找不到也可以从网上下载: https://www.iteye.com/resource/shaoyiju-11271559 这是我在网上找到的下载链接,需要下载积分,也可自行查找下载链接。

使用方法:

1.将qtsingleapplication源码拷贝到项目源码目录中,然后在项目.Pro文件中添加下面一行代码: Qt程序单例运行

在main.cpp文件中添加头文件: 1#include 在main主函数将 QApplication 替换成QtSingleApplication Main主函数实现方法:

不是单例运行的主函数: int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }

单例运行的主函数: int main(int argc, char *argv[]) { //自定义的程序标记,由这个标记去区别实例。如果不指定,则会以qApp->applicationFilePath()做为标记 const QString APP_ID(“name”);

QtSingleApplication a(APP_ID, argc, argv); //如果程序正在运行中发送消息,使正在运行的程序显示 if(a.isRunning()) { a.sendMessage(“raise_window_noop”); return EXIT_SUCCESS; } MainWindow w;

a.setActivationWindow(&w);

//连接消息信号槽 QObject::connect(&a,&QtSingleApplication::messageReceived,&a,&QtSingleApplication::activateWindow);

w.show();

return a.exec(); } 这是最基本的使用,就是用APP_ID标记这个程序,运行时先判断是否已经有实例在运行,如果有则通知程序显示到最前方,没有的话就执行主窗体的初始化和现实,进入事件循环。

猜你喜欢