qt 視窗程式第一次雙擊運行界面隱藏,第二次雙擊則顯示界面,且只運行一個實體 該如何實作呢?????
uj5u.com熱心網友回復:
第一次雙擊隱藏很簡單,在Qt雙擊事件里加hide() 就行了。第二次雙擊顯示,想問下雙擊哪里?
界面已經不存在的情況下,如果是Windows系統就用WindowsAPI獲取雙擊然后處理就好
uj5u.com熱心網友回復:
其實就是程式只能運行一個行程的技術,比如通過互斥體(或別的),啟動時檢測互斥體不存在,創建一個互斥體,并隱藏自己。再次啟動程式,互斥體已存在,發訊息關閉前一個行程。大概是這個原理。uj5u.com熱心網友回復:
問題描述不是很清楚,是想做單行程還是什么意思?uj5u.com熱心網友回復:
就像2樓說的那樣,創建一個命名的信號量。如果沒運行程式 就運行,并隱藏,如果已經有程式運行,就給它發訊息讓它顯示,然后自己退出uj5u.com熱心網友回復:
程式只能運行一個行程的技術,使用它互斥鎖吧uj5u.com熱心網友回復:
雙擊程式的exe檔案
uj5u.com熱心網友回復:
那就,main里加兩個標志位,一個用來表示有沒有此行程已啟動,一個用來表示有沒有顯示界面。
main的第一步檢測有沒有 xxx.exe的存在,有的話(可能需要把后啟動的行程名改了)進行行程間通信,告訴那個前面啟動的行程:“我又啟動了一次”,然后關掉這個行程。 之前的那個行程收到后把視窗show出來即可。show出來之后再接到這種訊息不處理。
可還行?
uj5u.com熱心網友回復:
行程間通信 換 socket應該也可以。uj5u.com熱心網友回復:
為什么要怎么這么麻煩呢,一、使用快捷鍵的方式,類似qq的ctrl+alt+Z. 二、使用系統托盤方式,為什么一定要雙擊來處理呢,使用起來不符合操作習慣,也不方便操作。uj5u.com熱心網友回復:
行程間通信 換 socket應該也可以。
兩種都可以,另外還有一種使用共享記憶體的方式
另外,qt官方有封裝了一個QtSingleApplication的類別庫,原始碼可以在qt官網下載
uj5u.com熱心網友回復:
這個Qt曾經有個Solution就是用來做這個的。基本上上邊說了原理。uj5u.com熱心網友回復:
每天回帖即可獲得10分可用分轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/109868.html
標籤:Qt
上一篇:開源了一款 iOS 工具應用
下一篇:小程式如何獲取中國標準時間
