<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當前位置:首頁>軟件介紹>如何搭建QT開發(fā)環(huán)境 查詢:
               
          如何搭建QT開發(fā)環(huán)境

                  Qt 是一個跨平臺的 C  應用程序開發(fā)框架。它提供給開發(fā)者建立圖形用戶界 面所需的功能,廣泛用于開發(fā) GUI 程序,也可用于開發(fā)非 GUI 程序。Qt 是完全 面向?qū)ο蟮?很容易擴展,并且允許真正地組件編程。

                  一、什么是QT

                  Qt 是一個跨平臺的C  應用程序開發(fā)框架。它提供給開發(fā)者建立圖形用戶界面所需的功能,廣泛用于開發(fā)GUI 程序,也可用于開發(fā)非GUI 程序。Qt 是完全面向?qū)ο蟮?很容易擴展,并且允許真正地組件編程。Qt 使用標準的C  和特殊的代碼生成擴展(稱為元對象編譯器Meta Object Compiler, moc)以及一些宏。

                  基本上,Qt 同X11 上的GTK、Motif、Openwin 和Windows 上的MFC,OWL, VCL,ATL 是同類型的東西,但是Qt 支持更多的平臺(包括Microsoft Windows、

                  GNU/Linux、Mac OS X、Android、iOS、WinCE、UNIX 家族等),面向?qū)ο笄夷K化程度更高(Qt 提供了一種稱為signals/slots 的安全類型來替代callback,這使得各個元件之間的協(xié)同工作變得十分簡單),豐富的API(Qt 包括多達250個以上的C   類,還提供基于模板的collections, serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達式的處理功能),支持2D/3D 圖形渲染,支持OpenGL、大量的開發(fā)文檔、XML 支持等。使用Qt 開發(fā)的軟件,相同的代碼可以在任何支持的平臺上編譯運行,而不需要修改源代碼。它會自動根據(jù)平臺的不同,表現(xiàn)平臺特有的圖形界面風格。

                  經(jīng)過多年發(fā)展,Qt 不但擁有了完備的C  圖形庫,而且近年來的版本逐漸集成了數(shù)據(jù)庫、OpenGL 庫、多媒體庫、網(wǎng)路、腳本庫、XML 庫、WebKit 庫等等, 其核心庫也加入了進程間通信、多線程等模塊,極大

                  地豐富了Qt 開發(fā)大規(guī)模復雜跨平臺應用程序的能力,真正意義上實現(xiàn)了其研發(fā)宗旨“Code Less; Create More; Deploy Anywhere.”

                  二、QT 在windows 下的環(huán)境搭建

                  在windows 環(huán)境下,可以使用vs qt 的開發(fā)環(huán)境進行項目開發(fā),環(huán)境搭建時有些細節(jié)要注意:

                  1)下載

                  下載時要注意下載和vs 版本相匹配的qt 版本,以及Add-in 工具。找到對應的版本進行下載,里面包含多種不同的版本,MSVC2010、MSVC2012 分別是指支持VS2010 與VS2012 的Qt 版本,而opengl 與非opengl 的區(qū)別是是否支持opengl, android、ios 分別是指支持android、ios 平臺的Qt 版本。這里我選擇的版本(已標注),如下:

                  ●qt-windows-opensource-5.2.0-msvc2010_opengl-x86-offline.exe(opengl版本)

                  ●Visual Studio Add-in 1.2.2 for Qt5

                  2)安裝

                  qt-windows-opensource 與Visual Studio Add-in 的安裝順序沒什么要求,安裝路徑不要包含中文、空格、特殊字符(~|?*!@#$%^&:,;)。安裝完成Visual Studio Add-in 之后,VS 就會出現(xiàn)相應的Qt 選項!

                  3)配置開發(fā)環(huán)境

                  選擇:Qt5->Qt Options->Add,配置VS 的開發(fā)環(huán)境。

                  這里根據(jù)自己的Qt 安裝路徑進行選擇,Path 為:

                  D:.2.0.2.0_opengl。到這里,開發(fā)環(huán)境就配置完成了,可以導入或者新建項目了。導入Qt的pro項目

                  ●選擇:Qt5->Open Qt Project File(.pro)...

                  新建Qt項目

                  ●選擇:文件->新建->項目->Qt5 Projects->Qt Application,輸入工程名,下一步...進行新建。新建完成之后,就可以運行了!

                  三、QT 的一些特點以及簡單使用

                  1)圖形用戶界面

                  Qt 的圖形用戶界面的基礎是QWidget。Qt 中所有類型的GUI 組件如按鈕、標簽、工具欄等都派生自QWidget,而QWidget 本身則為QObject 的子類。Widget 負責接收鼠標,鍵盤和來自窗口系統(tǒng)的其他事

                  件,并描繪了自身顯示在屏幕上。每一個GUI 組件都是一個widget,widget 還可以作為容器,在其內(nèi)包含其他Widget。

                  下面以登陸窗口為例:

                  左側(cè)的列表是QT 的控件列表,列表中的所有控件都可以放在QWidget 上。QWidget 顯示能力包含了透明化等功能。設置透明化,有幾種方式,我們這里用到的是設置樣式表的方式,下面的例子是設置QLineEdit 控件透明無邊框,

                  Qt 提供一種托管機制,當Widget 于創(chuàng)建時指定父對象,就可把自己的生命周期交給上層對象管理,當上層對象被釋放時,自己也被釋放。確保對象不再使用時都會被刪除。

                  這個登陸窗口中的所有控件的父widget 都是這個窗口,所以在窗口被銷毀時, 所有控件也同時被銷毀,不需要自己去控制。所以析構(gòu)函數(shù)的實現(xiàn)函數(shù)中可以不進行處理,代碼如下:

                  LoginDialog::~LoginDialog() 

                  2)信號與槽機制(Signals and Slots)

                  Q t 利用信號與槽(signals/slots)機制取代傳統(tǒng)的callback 來進行對象之間的溝通。當操作事件發(fā)生的時候,對象會發(fā)射一個信號(signal);而槽(slot)則是一個函數(shù)接受特定信號并且運行槽本身設置的動作。信號與槽之間,則通過QObject 的靜態(tài)方法connect 來鏈接。

                  例如:

                  connect(ui.pushButton_close, SIGNAL(clicked()), this,

                  SLOT(closeSlot()));

                  當關(guān)閉按鈕被點擊時,會觸發(fā)QPushButton 的clicked()信號,信號被發(fā)射之后, 會連接到接收者定義的槽函數(shù)中,這里是closeSlot();

                  信號在任何運行點上皆可發(fā)射,甚至可以在槽里再發(fā)射另一個信號,信號與槽的鏈接不限定為一對一的鏈接,一個信號可以鏈接到多個槽或多個信號鏈接到同一個槽,甚至信號也可連接到信號。

                  信號與槽機制也確保了低耦合性,發(fā)送信號的類并不知道是哪個槽會接受, 也就是說一個信號可以調(diào)用所有可用的槽。此機制會確保當在”連接”信號和槽時, 槽會接受信號的參數(shù)并且正確運行。

                  這里,我想談的是Qt 算是發(fā)明了signal/slot,這個思想也被其他一些框架語言借鑒了。

                  談signal/slot 之前先來談談C  的缺欠,這里只談一點,C  的設計目標是面向?qū)ο笳Z言,它不僅提供了對象的定義和構(gòu)建的方式,也定義了對象間的關(guān)系, 比如繼承派生聚合,但是它沒有提供對象間通信和共享數(shù)據(jù)的方式,這個缺點在一般程序的開發(fā)上不算個大問題,我們可以自己簡單實現(xiàn),但是對于GUI 開發(fā),這個缺點就被放大了很多倍。GUI 上的對象實在太多,窗口是對象,布局是對象,定時器是對象,而且對象間有錯綜復雜的關(guān)系,通信和數(shù)據(jù)交換非常頻繁,比如按鈕按下要通知父窗口或容器對象,滾動條變化了要通知列表對象。這種數(shù)量龐大的對象以及復雜的通信關(guān)系,可不是自己搞個簡單的實現(xiàn)就能解決的。

                  說到通信和共享,其實他們是一回事,共享很多時候就是為了通信,而

                  C   里要通信就必然要共享。

                  比如,一個類實例擁有另一個的指針,就可以訪問對方的數(shù)據(jù),調(diào)用對方的方法了,這實際就是共享了一個指針,這個類指針也是另一個對象的this。訪問數(shù)據(jù)和調(diào)用方法其實都是通信,把對方的數(shù)據(jù)拿過來,把自己的數(shù)據(jù)送過去,交換數(shù)據(jù)就是通信。

                  在C  里,由于沒有GC,管理大量原生指針是極其危險的,對象的生命周期不可控,野指針的出現(xiàn)概率會很高,大型C   的GUI 項目參與開發(fā)的人數(shù)眾多, 很難保證都不犯錯。

                  那么發(fā)消息行不行呢?比如MFC 那樣,可以,但是本質(zhì)上還是共享了窗口句柄,否則消息發(fā)給誰呢?而且還帶來另外的問題,就是類型安全,消息的參數(shù)是無法類型安全的。

                  Qt 作為大型GUI 項目的Framework,它必須解決這個問題,否則這個程序是寫不大的,寫大了就會問題層出不窮。

                  來看一段代碼,看看Qt 的解決方案: Window::Window()

                  QPushButton *b = new QPushButton(this);

                  connect(b, SIGNAL(clicked()), SLOT(on_button_clicked()));  Window::on_button_clicked() 

                  QPushButton *b = qobject_cast(sender());

                  b->setText("clicked!"); 

                  這段代碼,通過Qt 的signal slot 機制,把QPushButton 的點擊事件連接到了Window 的on_button_clicked 響應函數(shù)上。

                  3)布局管理布局管理類用于描述一個應用程序的用戶界面中的Widget 是如何放置。當視窗縮放時,布局管理器會自動調(diào)整widget 的大小、

                  位置或是字號,確保他們相對的排列和用戶界面整體仍然保有可用性。

                  Qt 內(nèi)置的布局管理類型有:QHBoxLayout、QVBoxLayout、QGridLayout 和QFormLayout。這些類繼承自QLayout,但QLayout 非繼承自QWidget 而是直接源于QObject。他們負責widget 的幾何管理。想要創(chuàng)建更復雜的版面配置,可以繼承QLayout 來自定義版面配置管理員。

                  上圖中被紅框圈起來的,是頁面中的布局,布局可以手寫,我們這里只展示設計師中處理的布局。布局分為四種,我們這里用到了簡單的兩種,橫向布局(QHBoxLayout)向布局(QVBoxLayout)。如上圖所示。

                  到這里為止,只介紹了qt 的一些基本的入門知識,大家通過qt 的界面文件中的布局和信號處理,就可以完成一個簡單的Qt 小程序啦!

                   

                  


          酒店客房消耗品的控制與分析酒店客房信息管理系統(tǒng)
          HMS酒店客房預定管理系統(tǒng)設計方案客房管理系統(tǒng)-C語言設計方案
          HMS客房管理系統(tǒng)解決方案客房管理軟件系統(tǒng)設計方案
          客房管理系統(tǒng)軟件設計方案跨平臺的移動應用開發(fā)研究
          excel與SQL快速搭建管理系統(tǒng)平臺快速搭建OA協(xié)同辦公平臺
          快速開發(fā)平臺ES2007新增功能操作介紹快速開發(fā)平臺的核心功能是什么
          管理軟件快速開發(fā)平臺介紹
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 九哥日逼网| 爱情岛成人亚洲WWW论坛 | 亚洲性爱操逼大片 | 久9热在线视频 | 99re色 | 7777男人的天堂 | 午夜成人精品偷拍在线 | 最新地址久久 | 福利免费视频 | 性爱视频在线网址 |