Qt应用程序只运行一个实例
来源:互联网 发布:算法之美 豆瓣 编辑:程序博客网 时间:2024/05/22 17:17
在实际应用中,我们经常需要让应用程序只有一个实例,再打开新的文档或者页面时,只是替换现在的窗口或者新打开一个标签,而不是重新启动一次应用程序。Qt中是否可以做到这样呢,答案是肯定的,因为Qt本身可以直接调用系统API,肯定可以做到,但是我们希望找到一个跨平台的通用的解决方案。
这就要用到Qt的QLocalSocket,QLocalServer类了,这两个类从接口上看和网络通信socket没有区别,但是它并不是真正的网络API,只是模仿了而已。这两个类在Unix/Linux系统上采用Unix域socket实现,而在Windows上则采用有名管道(named pipe)来实现。
既然是网络API,那么思路就很简单了,应用程序启动时首先会去连一个服务器(这里通过应用程序的名字来标识,就像网络端口一样),如果连接失败,那么则自己是第一个实例,就创建这么一个服务器,否则将启动参数发送到服务器,然后自动退出,而服务器会在收到通知以后进行处理。
这些动作我想最好是放在创建Application实例后,因为Qt本身有很多操作没有Application实例是无法进行操作的(至少事件循环是在创立Application以后才能启动吧),因此最好的位置就是通过继承QApplicaiton或者QCoreApplication自定义一个YourOwnApplication,然后在构造函数中进行,下面是一个示意。
Qt的QSingleApplication也能实现这个功能
- Qt应用程序只运行一个实例
- 让Qt应用程序只运行一个实例
- 应用程序只运行一个实例
- QT之QT只运行一个实例
- 让一个应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 限制Win应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 当前应用程序只运行一个实例
- 如何使应用程序只运行一个实例
- 保证只运行一个实例应用程序
- mfc应用程序只运行一个实例
- 只运行一个应用程序的实例
- 如何使应用程序只运行一个实例
- 保证应用程序只运行一个实例[c#]
- 使Qt程序只运行一个实例
- red hat linux使用yum 出现Loaded plugins: rhnplugin, security
- Visual Studio 2005 快捷键
- uboot开机logo
- update中使用select 语法
- swf文件格式解析入门(文件头解析)
- Qt应用程序只运行一个实例
- swf文件格式解析入门(tag解析)
- uboot: lcd frame buffer的保留机理
- 一个进程能够打开最大文件句柄数的设置
- swf文件格式说明书(中文+英文)
- 一个用Tableau创建的一天金融数据
- 一技术人员的2010年终总结
- Android2.2 Vold 分析-(二)---Vold 中 Netlink事件通信机制分析
- TCP/UDP Socket编程 C/C++实现(Windows Platform SDK)