QTSingleApplication使用筆記

來源:互聯網
上載者:User

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&))); 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.