Qt程序单例运行
Qt程序单例运行
可执行文件正常情况下是可以打开多个,多个同时运行,但是有些情况下必须只可以单例运行。
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标记这个程序,运行时先判断是否已经有实例在运行,如果有则通知程序显示到最前方,没有的话就执行主窗体的初始化和现实,进入事件循环。
- 分享
- 举报
-
浏览量:3152次2020-09-20 22:17:04
-
浏览量:6789次2020-11-12 15:56:53
-
浏览量:7217次2020-11-24 23:18:39
-
浏览量:3441次2022-02-24 09:00:15
-
浏览量:4352次2020-11-09 15:33:37
-
浏览量:2463次2022-12-08 23:43:55
-
浏览量:3163次2017-11-23 12:41:22
-
浏览量:4494次2020-07-31 13:45:09
-
浏览量:1398次2023-11-04 15:07:11
-
浏览量:1942次2020-08-28 16:40:19
-
浏览量:1176次2023-04-19 09:13:50
-
浏览量:2047次2018-03-21 15:49:48
-
浏览量:2653次2023-08-29 13:13:38
-
浏览量:2744次2018-08-16 10:50:22
-
浏览量:6127次2019-12-28 10:35:51
-
浏览量:558次2023-11-20 15:10:32
-
浏览量:2881次2020-08-21 19:39:43
-
浏览量:1723次2020-10-09 11:49:30
-
浏览量:3939次2021-08-19 14:01:30
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
小王子🤴
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明