首页QT › 使Qt 程序只能运行一个实例的3种方法

使Qt 程序只能运行一个实例的3种方法

1. 共享内存的方法

Unix: QSharedMemory “owns” the shared memory segment. When the last thread or process that has an instance of QSharedMemory attached to a particular shared memory segment detaches from the segment by destroying its instance of QSharedMemory, the Unix kernel release the shared memory segment. But if that last thread or process crashes without running the QSharedMemory destructor, the shared memory segment survives the crash.

方法1:
(据说这种方法在Linux系统下会有一个内存释放的问题,在某种情况下会引起程序的异常或崩溃)

方法2:

2. 使用QLocalServer和QLocalSocket类

下面是自已的写的代码,主要是在运行第二实例的时候,有一个提示的作用:

1. 切换到当前程序,并将当前程序最大化显示到前面。

2.关闭当前程序的进程,打开新程序。

(注意:需要在你的.pro里加上QT += network)

头文件:

源文件:

主函数:

在主函数中添加CUsrLogin.. 和 信号槽函数。

MainWindow中实现:

3. QSingleApplication类

实现原理应该和QLocalServer和QLocalSocket相同。

使用Qt中的QSharedMemory,QLocalServer和QLocalSocket实现(不过需要在你的.pro里加上QT += network)

具体说明可以参考:QSingleApplication

发表评论