可执行文件正常情况下是可以打开多个,多个同时运行,但是有些情况下必须只可以单例运行。 Qt程序单例运行的实现方法:使用qtsingleapplication。
qtsingleapplication位置:Qtsingleapplication在Qt的安装路径下可以找到。 本地找不到也可以从网上下载: https://www.iteye.com/resource/shaoyiju-11271559 这是我在网上找到的下载链接,需要下载积分,也可自行查找下载链接。
使用方法:1.将qtsingleapplication源码拷贝到项目源码目录中,然后在项目.Pro文件中添加下面一行代码:
在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标记这个程序,运行时先判断是否已经有实例在运行,如果有则通知程序显示到最前方,没有的话就执行主窗体的初始化和现实,进入事件循环。
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Qt程序单例运行 https://www.yhzz.com.cn/a/14641.html