国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

讓Qt應用程序只有一個實例

移動開發
Qt開放源代碼,并且提供自由軟件的用戶協議。使得它可以被廣泛地應用在各平臺上的開放源代碼軟件開發中QLocalSocket 提供了一個本地的套接字

在實際應用中,我們經常需要讓應用程序只有一個實例,再打開新的文檔或者頁面時,只是替換現在的窗口或者新打開一個標簽,而不是重新啟動一次應用程序。Qt中是否可以做到這樣呢,答案是肯定的,因為Qt本身可以直接調用系統API,肯定可以做到,但是我們希望找到一個跨平臺的通用的解決方案。

這就要用到Qt的QLocalSocket,QLocalServer類了,這兩個類從接口上看和網絡通信socket沒有區別,但是它并不是真正的網絡API,只是模仿了而已。這兩個類在Unix/Linux系統上采用Unix域socket實現,而在Windows上則采用有名管道(named pipe)來實現。

既然是網絡API,那么思路就很簡單了,應用程序啟動時首先會去連一個服務器(這里通過應用程序的名字來標識,就像網絡端口一樣),如果連接失敗,那么則自己是第一個實例,就創建這么一個服務器,否則將啟動參數發送到服務器,然后自動退出,而服務器會在收到通知以后進行處理。

這些動作我想最好是放在創建Application實例后,因為Qt本身有很多操作沒有Application實例是無法進行操作的(至少事件循環是在創立Application以后才能啟動吧),因此最好的位置就是通過繼承QApplicaiton或者QCoreApplication自定義一個YourOwnApplication,然后在構造函數中進行,下面是一個示意。

首先是YourOwnApplication構造函數:

 

  1. QString serverName = QCoreApplication::applicationName();  
  2.     QLocalSocket socket;  
  3.     socket.connectToServer(serverName);  
  4.     if (socket.waitForConnected(500)) { //如果能夠連接得上的話,將參數發送到服務器,然后退出  
  5.         QTextStream stream(&socket);  
  6.         QStringList args = QCoreApplication::arguments();  
  7.         if (args.count() > 1)  
  8.             stream << args.last();  
  9.         else  
  10.             stream << QString();  
  11.         stream.flush();  
  12.         socket.waitForBytesWritten();  
  13. qApp->quit();  
  14.         return;  
  15. }  
  16. //運行到這里,說明沒有實例在運行,那么創建服務器。  
  17.     m_localServer = new QLocalServer(this);  
  18.     connect(m_localServer, SIGNAL(newConnection()),  
  19.             this, SLOT(newLocalSocketConnection())); //監聽新到來的連接  
  20.     if (!m_localServer->listen(serverName)) {  
  21.         if (m_localServer->serverError() == QAbstractSocket::AddressInUseError  
  22.            && QFile::exists(m_localServer->serverName())) { //確保能夠監聽成功  
  23.             QFile::remove(m_localServer->serverName());  
  24.             m_localServer->listen(serverName);  
  25.         }  
  26.     } 

這樣就保證了新啟動的程序在檢測到有其他實例在運行時就會自動退出,但是它發出的請求還沒有被處理,下面看一下處理函數,也就是前段代碼中的newLocalSocketConnection()。

  1. QLocalSocket *socket = m_localServer->nextPendingConnection();  
  2.     if (!socket)  
  3.         return;  
  4.     socket->waitForReadyRead(1000);  
  5.     QTextStream stream(socket);  
  6.    … … //其他處理  
  7.     delete socket;  
  8.     mainWindow()->raise();  
  9.     mainWindow()->activateWindow(); //記得激活窗口哦 

【編輯推薦】

 Qt Symbian SDK 安裝

用Qt為Symbian開發應用程序

諾基亞發布Qt SDK 1.1正式版

詳解Qt Lighthouse和Wayland

QML教程:Qt-Quick六大開源組件

Qt和KDE在未來將面臨新的挑戰和機遇

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-05-11 10:58:39

iOS

2011-01-20 07:16:48

Web程序員

2011-06-09 09:12:12

QT symbian

2010-08-13 13:05:30

Flex應用程序

2011-08-10 17:24:05

SQL語句嵌入式SQLJava

2023-05-19 08:49:58

SQLAlchemy數據庫

2013-01-11 14:45:43

iOS開發移動應用iPhone

2009-10-19 14:14:19

OSGi Web應用

2021-07-14 17:39:46

ReactRails API前端組件

2023-09-21 08:00:00

ChatGPT編程工具

2020-10-11 20:54:39

Python開發Docker

2011-03-15 19:45:27

Windows Azu

2011-03-10 10:45:47

Azure“Hello Worl

2011-06-08 10:24:38

Windows Pho 應用程序

2012-12-07 10:15:53

IBMdW

2011-06-08 10:01:36

Windows Pho 應用程序

2022-10-21 14:21:46

JavaScript筆記技能

2013-05-13 09:31:29

Web App開發WebApp

2021-02-05 11:55:37

PythonWindows平臺代碼

2011-05-03 09:14:45

QtOvi商店Symbian
點贊
收藏

51CTO技術棧公眾號

不卡av免费在线| 成人在线tv视频| 国产人久久人人人人爽| 日本不卡二区| 亚洲二区免费| 色一区二区三区四区| 最近2019中文字幕在线高清| 男同在线观看| 一区二区三区四区蜜桃| 波多野结衣家庭教师在线| 男女男精品视频| 国产伦精品一区二区三区照片| 成人在线亚洲| 欧美有码在线视频| 成人h动漫精品一区二区器材| 亚洲视频国产视频| 韩国久久久久久| 亚洲人成伊人成综合网久久久 | 美日韩黄色大片| 久久精品国产欧美激情| 羞羞影院欧美| 中文字幕日韩在线视频| 中文字幕日本一区| 久久久欧美精品| 精品亚洲免a| 国产精品对白刺激| 综合激情网站| 蜜桃视频成人| 国产一区在线观看麻豆| 经典三级在线视频| 波多野结衣在线aⅴ中文字幕不卡| 欧美精品久久久久久久久久久| aaa国产一区| 亚洲一级片网站| 亚洲丰满少妇videoshd| 日本高清中文字幕二区在线| 欧洲精品一区二区三区在线观看| 黄av在线播放| 日韩av在线高清| 成人精品高清在线视频| 欧美成人免费全部观看天天性色| 清纯唯美亚洲经典中文字幕| 成人激情视频在线播放| 国产亚洲在线观看| 制服国产精品| 久久综合久久综合九色| av手机在线看| 欧美日韩国产bt| 国模精品视频| 91国产美女视频| 久久久久久免费视频| 国产精品swag| 激情综合色综合久久| 免费日韩视频在线观看| 污片在线观看一区二区| 欧美性猛片xxxxx免费中国| 每日更新av在线播放| www.欧美.com| 久久久免费视频网站| 亚洲精品国产a久久久久久| 午夜影院在线免费观看| 91超碰这里只有精品国产| 乡村艳史在线观看| 午夜精品福利电影| 欧美精品午夜| 男人天堂网站在线| 亚洲人xxxx| 欧美videosex性欧美黑吊| 欧美黑人xxxx| 亚洲毛片一区| 国产精品69页| 欧美日韩国产影片| 四虎国产精品成人免费影视| 国产欧美一区二区三区在线看| 日本欧美一区二区| 欧美18 19xxx| 日韩免费观看高清完整版| 中文字幕久久精品一区二区| 国产亚洲福利社区| 久久久精品国产免大香伊| 香蕉视频在线免费看| 日韩中文字幕在线免费观看| 午夜激情久久| 秋霞无码一区二区| 日韩欧美一区二区在线| 午夜日韩成人影院| 91天堂在线观看| 国产a级毛片一区| 最近中文字幕在线中文视频 | 伊人春色在线观看| 91精品国产色综合久久不卡98口 | 牛夜精品久久久久久久99黑人| 无码人妻精品一区二区蜜桃百度| 亚洲精品第1页| 玛雅亚洲电影| 92看片淫黄大片欧美看国产片| 成人h版在线观看| 中文字幕在线播放| 亚洲91精品在线观看| 麻豆精品国产传媒mv男同| 中文字幕亚洲精品视频| 久久综合五月天| 久久99久久久欧美国产| aaa在线免费观看| 国产精品免费久久久| 久久久亚洲精品石原莉奈| 亚洲精品福利电影| 欧美日本韩国在线| 色美美综合视频| 欧美日韩123| 免费av网址在线| 亚洲一区二区久久| 日本成人在线电影网| av网站无病毒在线| 成人做爽爽免费视频| 亚洲欧美另类综合偷拍| 国产亚洲久久| 国产aaa免费视频| 精品国产免费人成电影在线观看四季| 精品精品久久| 中文字幕成人在线视频| 日韩在线www| 白白色亚洲国产精品| 亚洲精品动漫| 在线丝袜欧美日韩制服| 精品成人免费观看| 日韩高清不卡一区二区三区| 久久久久久国产精品免费无遮挡 | 在线日本制服中文欧美| 在线免费视频一区| 欧美日本中文字幕| 久久综合999| 国产中文欧美日韩在线| 亚洲美免无码中文字幕在线| 中国人与牲禽动交精品| 国产成人亚洲精品青草天美| 黄色污网站在线观看| 色视频一区二区三区| 精品区一区二区| 另类小说一区二区三区| 中文在线免费视频| 国产免费裸体视频| 久久综合网hezyo| 中文字幕在线播放不卡一区| 竹菊久久久久久久| 亚洲第一成年免费网站| 北条麻妃高清一区| 欧美亚洲动漫另类| 亚洲一区二区三区免费在线观看| 懂色av中文在线| 玛丽玛丽电影原版免费观看1977 | 综合网插菊花| 91精品国产91久久久久久最新 | 欧美色图12p| 久久激情中文| 国产高清自产拍av在线| 精品成在人线av无码免费看| 久久亚洲私人国产精品va| 国产精品久久久久久久岛一牛影视 | 久久久久久久影视| 久久久久久久久久久一区| 日韩国产欧美精品一区二区三区| 成人国产精品免费观看动漫| 精品福利网址导航| 人成在线免费视频| 欧美二区在线看| 亚洲一级黄色av| 国产精品热久久久久夜色精品三区 | av中文字幕亚洲| 麻豆精品蜜桃| 992kp快乐看片永久免费网址| 日韩**中文字幕毛片| 欧美综合色免费| 青青国产91久久久久久| 久久久加勒比| 国产一级激情| 欧美精品一区二区三区在线四季| 亚洲跨种族黑人xxx| 国产精品第一页第二页第三页| 亚洲综合色网| 男人天堂亚洲天堂| 麻豆传传媒久久久爱| 亚洲va国产va天堂va久久| 日韩成人在线视频网站| 亚洲欧美怡红院| 天堂在线亚洲视频| 桃色一区二区| 污网站在线观看视频| www.99riav| 亚洲最大av网| 在线播放日韩精品| 精品视频二区| 在线观看一区欧美| 日本韩国在线不卡| 欧美tickling挠脚心丨vk| 国产免费久久精品| 久久久国产精品一区二区中文| 日本亚洲视频| 一级日本在线| 男女午夜网站|