QTSingleApplication使用筆記


QTSingleApplication,是Qt官方提供的,用於實現只啟動一個實例,並在啟動時向另一個實例通信(依賴於QtNetwork模塊) 

默認情況下,收到消息后會自動激活自身窗口 

(一)簡單使用:

(1)將里面的qtsingleapplication目錄拷貝到項目的源碼目錄中,

(2)然后修改項目的.pro文件,加入下面一行代碼

include(../qtsingleapplication/src/qtsingleapplication.pri)

(3)修改main.cpp文件,加入頭文件

#include <QtSingleApplication>

並且 

QtSingleApplication app(argc, argv);

if (app.isRunning())
{
app.sendMessage("raise_window_noop");
return EXIT_SUCCESS;
}
........
QMainWindow w;
app.setActivationWindow(&w);
.......

(4)完成 

(二)改進使用:

 (1)識別程序

默認情況下,QtSingleApplication使用QApplication::applicationFilePath作為自己的appId,用於識別不同的app

如果希望不受程序存放路徑影響,則需要在指定appId即可。如下

 QtSingleApplication app(QLatin1String("my_app_id"),argc, argv);

這樣即便是在不同的目錄的程序,仍能互斥

(2)發送消息和激活窗口

 收發消息是QtSingleApplication特有的功能,而QApplication是不具有的。

默認情況下,QtSingleApplication接收到任何消息之后,都會自身的窗口窗口。如果不希望激活窗口,則可以自行設定,甚至重新連接信號槽。如下

app.setActivationWindow(&w,false); 

QObject::connect(&app, SIGNAL(messageReceived(const QString&)),&w, SLOT(handleMessage(const QString&))); 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM