諾基亞發布的Qt 4.5和Qt Creator 1.0 - QT延長將有利於袋

2009年3月6日·在發布的Qt · 查看評論

這一消息是老了,但仍然是溫暖的。 在最後一天週二 3月3日,諾基亞宣布,備受矚目的4.5版推出的Qt,Qt擁有一個擴展,仍然發布了第一個版本的Qt Creator的目的。

閱讀更多

安裝和集成的Eclipse,CDT,QT,顛覆,PERL,Web工具Vim和只用鼠標

2009年2月21日·張貼在C / C + +提示的EeePerl中Qt的顛覆VIM網絡 · 查看評論

很久以前,在一個職位不太遠從這裡,我們展示了如何安裝與Qt開發和使用Subversion集成插件月食。 但時間的推移,這些版本的變化,一切都不同了,這個時候,我們將展示如何使用點擊和EEE PC這只。

閱讀更多

SVN的Eclipse + QT +

2008年5月9日·張貼在C / C + +Qt的顛覆 · 查看評論

更不是作為一個教程的日誌個人,我覺得有必要留下方便,這次月食的為我所用的配置步驟,或安裝 Eclipse和插件的地方,我通常使用(SVN和qt) 。

該命令會影響你的主目錄以外的,需要超級用戶權限。

如果您決定安裝 Eclipse開始在你的發行包可用,你可以直接跳到步驟 2。

#步驟 0:安裝 Java

對於日食的工作,你需要Java運行時環境(JRE)安裝 *和*配置。

可以下載的JRE直接從Sun的網站http://java.sun.com/javase/downloads/index.jsp 安裝和配置的完整說明可在http://java.sun.com/javase/6/webnotes/install/index.html在Java 6的情況。

步驟#1:Donwload和安裝 Eclipse

這次月食可以很容易地下載,在其官方網站上下載區域: http://www.eclipse.org/downloads 下載後,只需解壓縮和停止使用。 在我來說,我使用:

  -xvzf eclipse-cpp-europa-winter-linux-gtk.tar.gz -C / usr / local用戶@主機$ 焦油xvzf日食- CPP -歐羅巴-冬季的linux - gtk.tar.gz - C / USR / 地方 

如果一切正常的日食,將會是在/ usr /本地/月食/ Eclipse可執行文件所以只在您的環境創建一個喜歡的圖形鏈接/快捷/不管。

步驟#2:下載並安裝與 QT插件的集成


Qt的Eclipse集成
Qt的Eclipse配置

該插件,我目前使用的是由Trolltech提供的。 在那裡,您可以管理從一個小的圖形編輯器,您的項目文件,即使你願意,可以直接訪問該文件。臨。

這個可以從http://trolltech.com/developer/downloads/qt/eclipse-integration-download ,並完成安裝說明可在發現http://trolltech.com/developer/downloads/qt / qteclipse - installmanual ,是非常複雜:

  -xvzf qt-eclipse-integration-linux.x86-gcc3.3-1.4.0.tar.gz -C / usr / local用戶@主機$ 焦油xvzf QT - Eclipse的集成- linux.x86 - gcc3.3 - 1.4.0.tar.gz - C / USR / 地方 

如果一切順利,該插件文件複製到目錄/ usr /本地/月食/插件。

注:如果誰的這次月食的安裝選擇通過分佈安裝,注意! 裡面的壓縮文件,是eclipse的目錄 /插件/,他的牙齒插件的文件,這些文件應該被複製到Eclipse安裝的插件目錄,通常是/ usr / lib中/日蝕 /插件。

安裝完畢後,開始用命令蝕:

  usr / local / eclipse / eclipse -clean用戶@主機$ / USR /本地/日食/ 月食清潔 

現在,去窗口>首選項>並設置 Qt的版本和“路徑”,根據你安裝的Qt

為了更方便,如果你在命令行調用的eclipse直接添加啟動腳本內的任何可執行目錄在$ PATH環境變量(。bash_profile中)

  = $PATH : / usr / local / eclipse 出口 PATH = $ PATH:/ USR /本地/日食 

步驟#3:顛覆

在Eclipse中去幫助>軟件更新>查找並安裝。 馬克的新功能,搜索和安裝選項,單擊下一步。 現在添加遠程站點:

巴克明斯特

http://download.eclipse.org/tool​​s/buckminster/updates

Subclipse的

http://subclipse.tigris.org/update_1.2.x

標記相應的複選框,然後單擊完成。 經過簡短的諮詢,互聯網,只檢查插件和依賴關係和運行擁抱。

在QT開始,第三部分- qmake和專業版。

2008年5月7日·張貼在C / C + +Qt的 · 查看評論

在這第三次後,我們將談談實用QT *.親和qmake項目文件。 讓我們明白什麼是qmake和如何配置不同類型的項目。

在qmake的

該 qmake是一種實用工具,與 Qt框架來。 它的功能是解析一個項目文件(*. PRO)和生成的一個Makefile的規則已經建設部UIC和QT的嵌入式選項。 沒有它,例如,將有顯式調用商務部創建文件* moc_並進入明確的編譯器和鏈接器選項,包括正確的QT到我們的項目。

關於qmake項目文件正式文件,可以找到這裡

項目文件*.親

若要從命令列一個簡單的項目文件,進入項目目錄,然後鍵入:

 用戶@主機$ qmake的項目 

這樣做,你創建作為當前目錄同名的擴展之後,一個文件。臨。 如果已經有這個目錄中的文件被識別為 qmake的源代碼文件(。H,CPP),表格(。UI)等,它們會自動添加到項目文件。

創建該文件。臨,執行不帶參數 qmake的它將嘗試解析一個文件,與作為當前目錄相同的名稱臨。 你甚至可以指定為 qmake的參數替代項目文件。 如果一切運作良好,一個 Makefile被創建,並用一個簡單的做,我們可以生成項目。

該項目文件是常規文本文件包含宏和qmake的,將被解釋為創建 Makefile文件的指示。 完整的選項列表中可以找到的文檔在線 最常見的有:

模板:說明項目的類型。 使用簡易護理程序的可執行文件“應用程序”或“庫”創建庫。

CONFIG:添加幾個選項到項目中。 其中,“調試”添加調試信息,“staticlib”連同模板“庫”,即創建(在Linux)abiblioteca靜態的。

目標:名稱和目標,即應用程序或庫的位置。

MOC_DIR:目錄中的文件將被梯度moc_ *。 有用沒有污染的源代碼目錄。

OBJECTS_DIR:補充上一個選項表示的目錄就可以了,文件將生成的目標代碼(*. O)。

IncludePath:外部目錄在頭要在項目中使用,如從外部庫頭。

DEPENDPATH:外部源代碼,由項目使用的目錄。

標題:該項目的頭文件(*. h)。

表格:與QTDesigner(*. UI)生成的接口文件。

來源:源項目(*. CPP)代碼執行的文件。

LIBS:由項目使用的外部庫。 - L表示的庫路徑,E - L說,該庫的名稱。

QT:QT模塊被添加/從項目中刪除。 如果過去的“QT =”(等於空QT),QT是在項目中使用沒有模塊。

SUBDIRS:與模板“子目錄”一起使用,表示子目錄項qmake的應該尋找其他項目文件。

有了這些,我們可以創建簡單的設計一些。

一個簡單的應用程序:

  #第一行創建了這個註釋字符
 #這個文件的名稱是“app.pro”
 TEMPLATE =#我們的應用程序模板是一個應用程序調用
 TARGET = BIN /#myapp.bin myapp.bin在DIR /斌
 MOC_DIR = TMP / MOC#MOCS的目錄,可選
 OBJECTS_DIR = TMP / OBJ#目錄對象的代碼,可選
 HEADERS + = MyClass.h#頭類 MyClass
 SOURCES + = main.cpp中#用於文件組織成
                 myclass.cpp#多行。 

一個簡單的庫:

  #這個文件的名稱是“lib.pro”
 TEMPLATE = lib中#我們的模板庫是一個
 #CONFIG + = DLL動態,稱為
 TARGET = LIB / mylib中#mylib中在DIR / LIB
 MOC_DIR = TMP / MOC#MOCS的目錄,可選
 OBJECTS_DIR = TMP / OBJ#目錄對象的代碼,可選
 HEADERS + = MyClass.h#頭類 MyClass
 SOURCES + = myclass.cpp#實現的類 MyClass 

應用程序使用外部庫:

 #這個文件的名稱是“mixed.pro”應用程序模板=#我們的模板被稱為 TARGET = BIN /#myapp.lkd在DIR myapp.lkd /斌MOC_DIR = TMP / MOC#為 MOCS目錄,可選的應用程序OBJECTS_DIR = TMP / OBJ#目錄對象的代碼,可選 IncludePath + =。  #dir其中有外部的lib源頭 + = main.cpp中#應用程序的執行情況。 

嵌套目錄:

要利用嵌套的目錄,我們需要在當前目錄的項目文件,並在另一個子目錄。

在當前目錄,使用的選項:

  TEMPLATE =子目錄
 SUBDIRS = [要被按順序編譯子目錄列表] 

如果你只輸入目錄名稱,它必須包含您的姓名一個項目文件。 然而它是可能的,更大的直接向子目錄列表,一個目錄由具有奎克項目文件名後面。

在本教程中所討論的例子完整的源代碼可以找到這裡

總之

該 qmake是一個簡單的和非常強大的工具,它極大地方便了一個誰也管理複雜的項目樹的生命,即使項目不使用QT(只加在'= QT'端)。 添加到這個事實,即項目文件的語法非常簡單,有點直觀。 如果您需要更精細的調整,文檔在線會給你的樂趣了十幾個選項。

不管有沒有 QT QT qmake的始終是一個負責管理構建樹很好的選擇。

在QT開始,第二部分-信號,槽和定時器

2008年2月1日·張貼在C / C + +Qt的 · 查看評論

在這篇文章中我也跟著用遊戲來彌補對 QT初學者的小教程。 這一次,我將展示如何創建自己的信號和槽,以及如何處理計時器。

源代碼可以在此鏈接

示例程序是一個計時器,將使用類QTime ,對QT的主要類別之一,而且會告訴你風格的液晶顯示器使用計算器類QLCDNumber

QT和計時器

QT中的最基本的支持定時器是從QObject類,它提供的方法可用的QObject::的startTime()QObject的::KillTimer() 。 第一個方法返回一個唯一的ID,第二個計時器結束時通過這個 ID的定時器。

對於這個工作,但是,一段代碼,使用這一機制必須在一個“事件循環”。 一旦啟動計時器不時它(超時)作出申請Dispater QTimerEvent ,擾亂了正常的程序流,直到事件被處理。

最大超時沒有定義,它可以創建具有多年超時定時器,但是,最短時間可以從系統到系統。 在Windows Vista的最低定時器為 10毫秒,而這是在Linux 2.6.x的配置(默認為 4毫秒)。 在QT會盡量提供所有事件,要求,但如果系統不會讓它降“盈餘”。

定時器也可用於線程,但你必須尊重一個事件循環內被條件。 主題值得另一篇文章中,一如既往...

QTime實現定時器較高的水平,使某些功能。 一個是QTime:singleShot() ,其中一次火災事件。

閱讀大量文件和重複,枯燥,但相信我,你會節省很多的QDorDeCabeca ...

更多關於信號和槽

信號和槽用於對象之間,對 QT的一個通訊中心焦點。 在這個系統中,而不是實現回調來處理事件,我們使用了連接信號槽的概念,使得編程更加直觀。

信號和槽是由類處理方法元對象編譯器(MOC)前的源代碼進行編譯。 他們不屬於標準 C + +,所以fazum商務部解析源代碼,並生成可編譯部分的特別聲明。

通過運行在任何類來實現信號和槽,商務部命令的源代碼的某些量產生。 隨著該方案的使用qmake的 ,商務部到程序調用到Makefile文件,使它透明的程序員。

對於一個類可以實現信號和槽,它需要訪問的元對象系統 因此,應該從類繼承QObject的和它的子類,並需要有宏Q_OBJECT在其隱私聲明面積。 完成了準備工作,標誌中聲明一節“信號”中的部分和槽“[公眾|保護|私人]槽”。

後宣布槽,然後像其他常見的方法定義,可以明確地稱為像任何其他。 種種跡象都已經多了幾分細膩,只有永遠宣布,由程序員定義。 究其原因? 而在試圖建立結束消息:

 TMP / moc_mydisplay.o:在函數'MyDisplay:signalPlay()“:
 〜/秒錶 / TMP / moc_mydisplay.cpp:89:`MyDisplay多個定義:signalPlay()
 TMP / mydisplay.o:〜/秒錶 / mydisplay.cpp:169:首先這裡定義
 collect2:ld的退出狀態返回1
製作:** [秒錶]錯誤 1

裡面的文件生成moc_mydisplay.cpp下面的代碼:

  / /信號0
 signalPlay ( ) 無效 MyDisplay:signalPlay()
 {
     activate ( this , & staticMetaObject , 0 , 0 ) ; QMetaObject:: 激活 (這一點,staticMetaObject,0,0);
 } 

是的,建設部生成一個與所謂的QT元方法的定義信號。 因此,界定在QT信號的身體是非法的,將通過重新生成方法的編譯錯誤。 讓 MOC利用了你的信號實施護理。

連接

這已經不是剛剛設置好的信號和槽。 你必須定義他們將如何相互作用的。 要做到這一點的方法是通過連接通過連接(它們方法在每一個繼承人存在QObject的 這建設部將實施的信號,以便向它在給(S)插槽(S)連接(S)用同樣的參數調用的結果調用。

根據連接,甚至可以返回信號的要求回最後一個插槽相同的值。 請注意,這不是很安全的連接到多個插槽信號,因此,沒有任何保證的順序命名。

一個給定的信號可以被連接到第二個信號直接。 一個發射(第一信號),然後相當於一個發射()在第二個信號,因為後創建解脫,在第一次調用的調用結果,第二個步驟,這會導致連接到另一個方法調用等。

連接方式

基本上有三種方式連接信號和槽,如果不正確使用可能是一個可怕的錯誤很難發現的來源。 連接這些形式傳遞給connect()方法的額外的參數。 它們是:

直接連接 :插槽是立即調用信號已經在那裡發出的信號線程發出。 這作為一個直接調用插槽。

排隊連接 :信號發送和到去一個叫槽的QT內部列表,信號立即返回,不管槽被稱為與否。 事件循環將處理該列表,只有後來的插槽是在線程對象所在的插槽調用。

自動連接 :這是默認類型,用於當你不指定連接類型。 這是一個“罪惡的種子” ,它提出了兩種截然不同的行為:如果信號和槽駐留在同一線程上,作品作為直接連接,但在其他工程,排隊的連接。

阻塞隊列連接 :咦!? 不只是三? 那麼,這是該文章閱讀的優勢之一:節省您的文件不一致! 這種連接是類似排隊的連接,只是該線程被阻塞,直到信號被正式執行的信號。 請注意,只能使用非常謹慎,在不同的線程信號和槽。 使用不當也可能導致死鎖。 你會知道當你看到這樣的事情:

用戶 @主機:〜/秒錶 $ /秒錶
 QT:死鎖檢測而激活BlockingQueuedConnection:發件人
 QPushButton(0x807e2d8)接收MyDisplay(0x8076ac0)

為解決有關問題是什麼意思“線程一個對象所在”指的是QT arespeito線程。

始終採取信號,槽,線程和定時器非常謹慎。 這是QT的主要特點,但其濫用可導致錯誤極難找到。 查看所有關於它的文檔。

到源

我們的例子是由兩個類和MyDisplay秒錶和一個共同文件的主。 主,只有創建一個 QApplication對象秒錶。 這個類負責 MyDisplay方案的視覺部分的護理,一個按鈕和一個液晶顯示樣式對話組成。 Stopwatch類別將創建一個小部件顯示和執行計時器。 請注意,這個架構是不是最elegent,更有趣的繼承類秒錶 MyDisplay。 但是,這會破壞的樂趣幾乎無需使用信號和槽。

對信號和槽的使用變得更清晰,當我們想要的對象與外界溝通。 一般來說,類不知道什麼是外。 在它們的指針傳遞到外部對象,它傷害了封裝,使通用的代碼較少。 在我們的例子,更有趣的使用信號和槽是myDisplay的對象(內部秒錶)報告事件從 /到對象秒錶(外部Mydisplay)它,沒有得到的一般性或封裝丟失。

隨著 Qt的設計(在另一篇文章中我將討論它)的幫助下,我創建了對話框,按鈕和LCD。 經過簡化的代碼,以滿足我們的目的。 如何myDisplay繼承 QDialog的,間接繼承自QObject,使用信號和槽只需添加在類的私有部分聲明 Q_OBJECT宏。 之後,我說等輔助方法:

  公共插槽:
     long ) ; slotDisplayValue 無效(長);

 私人插槽:
     slotPlay 無效 ();
     slotStop 無效 ();

 信號:
     signalPlay 無效 ();
     signalPause 無效 ();
     signalStop 無效 ();
     signalReset 無效 (); 

有跡象傳達給相關的按鈕點擊的外部事件。 已經是私有槽將前處理過程,而公眾有權從外部計時器刻度的。 因此,類向外界發送信息和接收來自外界的信息不知道什麼是在對方的。 好老接口的合同。

  公共插槽:
     slotPlay 無效 ();
     slotPause 無效 ();
     slotStop 無效 ();
     slotReset 無效 ();

 私人插槽:
     slotTick 無效 ();

 信號:
     long ) ; signalTicks 無效(長); 

模擬和相反的StopWatch類實現了插槽,接收信號 MyDisplay類,並聲明的信號發送信息向公眾槽。

它也實現了一個 QTime,將火災每10毫秒(讓我們的朋友可以按照lerdinhos Vista的!),遞增計數器。 此計數器是發回的顯示格式和顯示。

定時器可以停止,暫停和隨時重新啟動通過點擊相應的按鈕。

該 Finalmentes

這個例子本身並沒有多少代碼,但它說明了定時器和定制信號和槽建設最基本的使用。 一個很特別的關注,但是,應給予細節,涉及利用這些資源,就可以成為致命的陷阱。

重要鏈接

信號和槽
QTime
版面中的QT
聯機文檔的QT

在QT開始,第一部分

2008年1月26日·張貼在C / C + +Qt的 · 查看評論

根據要求,我決定把顯示短的文章,以獲得創業的QT。

在apana 20條線與空間(是的,空間是你的朋友,永遠不會離開)和額外的頭,我們可以做一個“Hello World”的圖表,其中已經使用該框架的主要特徵。

正如我沒有辦法測試在其他平台上,我假設,該平台使用任何* nix的,而QT開發庫已經安裝,以及標準構建工具。 如果沒有安裝QT,現在是時候採取看看這個鏈接

完整的源代碼示例可以下載在這裡 ,但如果你喜歡做手工了,創造qthello和裡面一個名為包含以下內容的目錄main.cpp的地方:

  01#包括<qapplication>
 02#包括<qwidget>
 03#包括<qpushButton>
 04
 main ( int argc , char ** argv ) 05 INT(INT ARGC,ARGV 的char **)
 {06
 app ( argc , argv ) ; 07 一個QApplication應用程序(ARGC,ARGV);
 window ; 08 QWidget的 窗口;
 button ( "Hello World!" , & window ) ; 09按鈕QPushButton(“世界您好!”,&窗口);
 10
 ( 300 , 200 ) ; 11窗口調整大小 (300,200);
 ( 100 , 85 , 100 , 30 ) ; 12按鈕SetGeometry(100,85,100,30);
 13
 :: connect ( & button , SIGNAL ( clicked ( ) ) , 14 QObject的: 連接 (&按鈕,信號(點擊()),
                          SLOT ( quit ( ) ) ) ; 與應用,SLOT(退出()));
 15
 ( ) ; 16窗口顯示 ();
 app. exec ( ) ; 17 返回應用程序exec();
 19}
 20 

現在經過一個終端,目錄,然後鍵入qmake的項目。

如果一切是正確的安裝,一個名為qthello.pro必須已經創建。 如果沒有在目錄 qthello.pro,然後檢查上一步。

隨著一切都解決了在終端中輸入qmake的&&做。 這將編譯的例子,它的工作了,一個可執行文件名為 qthello已創建。

運行。/ Qthello它和一個按鈕窗口應該出現。

好吧,我們現在最有趣的部分:源代碼。

前三行只包含標題有關的類,我們將使用Qt。

第7行聲明了一個 QT應用程序並將其傳遞給由外殼程序收到的參數。 了QApplication類管理的方案和它的設置主要流向。 它包含主事件循環,這裡無論從界面和其他來源的所有事件的處理和運輸。 它也負責管理其他事物之間的程序啟動和關閉。

第8行聲明了一個小部件,這將是我們的主要圖形元素。

第9行聲明與文本按鈕的“Hello World!”,使得它一個“兒子”我們的主要部件。 這將使按鈕,在主窗口部件出現。

11:12行配置的形狀和定位的組件。

第14行顯示了一個框架的主要特徵, 信號槽系統。

信號和槽是用來執行對象之間的通信。 通過這個系統中的對象可以火(發送)事件(信號),可以捕獲和一個(或多個)對象(S)處理。 信號和槽是類特殊的方法。 基本上,一個信號發射被翻譯成通過調用槽MOC(元對象編譯器) ,其中預處理的源代碼編譯之前。 對於每一個類,它實現信號和槽,它生成的文件名為 moc_nomedaclasse.cpp,然後隨著剩下的代碼編譯。 這是所有做透明和程序員通常不必擔心這些細節。 具體而言,signigica發送一個信號,它通過調用相關的插槽將連接傳遞到信號相同的參數莫名其妙。 更多的信息可以在網上進行檢查文檔。

在我們的例子中,點擊鏈接將信號()與槽退出()申請對象的對象按鈕。 這意味著,在按鈕上按一下,一個信號被觸發,後經申請對象中捕獲,然後進程結束。

在第16行,調用 Show()的構件方法,使之成為可見。

在第17行,我們終於控制了QT程序。 在exec()方法將啟動主迴路及其所有的機制,只有當應用程序返回完成,在我們的情況下,當 app.quit()是通過系統的信號槽調用。

這個簡單的“Hello World”聽起來很傻,但它足以展示QT的一些關鍵功能,作為主循環中,圖形對象和使用的信號和槽的創建。

在接下來的文章中我將介紹創建我們自己的信號和槽和使用定時器。

參考文獻:
一個QApplication
QWidget的
QPushButton
信號和槽

建設有QT一個多窗口界面簡單經理

2008年1月24日·張貼在C / C + +Qt的 · 查看評論

有幾次我最後不得不放棄了許多屏幕維修系統接口,無論是圖形或文字模式。 通常,銀幕數量的增長,隨著未經事先規劃系統,它總是導致的模糊要求,#ifndefs,交換機和其他怪物糾結。

第一次我碰到一個問題就來了這樣的是在我做這樣後期的一場比賽的第一個版本Elifoot到一個CEFETES公平。 當時我碰到的功能,他們互稱,只有當它被退回的目標設定。 結果:有棧! (不要擔心,在這個新的版本已經修正!)

在與多個窗口界面的情況下,並在系統中的規劃上的飛時,通常有窗口,關閉窗口之前調用等,留下了足跡的破壞和恐怖離開其他窗口。 相信我,你永遠不會想要接手一個嚇了一跳維修。

塵塵 ...

在我的情況,解決創建一個接口管理器的問題。 一個對象,控制集中創建和銷毀對象的接口。 每個對象,以完成自己的任務,信號的經理,他需要清理混亂的照顧。 因此,每當一個對象是出生,死亡和執行該方案沒有通過控制其前進的任務,他總是回來的經理。

請注意,我並沒有說經理會破壞對象,但它會做清潔。 每個對象必須建立以經理告訴他每次完成後,無論是與成敗。 通常,對象本身能夠“殺死”,而僅僅是非常有用的,同時考慮到一些經理的工作,但無法控制。

在開始之前

我並不認為這個簡單的職位涵蓋了所有功能的Qt或管理界面的各個方面。 我就說說我是如何解決的一個問題,我做到了。 這篇文章也是對朋友聖保羅,里約熱內盧誰擁有了那樣的菠蘿皮來致敬!

動手

我感到,在大多數情況下,自下而上的開發,但自上而下的分析師。 這似乎令人困惑,但沒有必要驚慌,幾乎 ...

對象需要交換信息。 對於這一點,系統的信號槽Qt將有很大的幫助。 該對象將發送信號(發射(信號))和經理會聽取他們(插槽())。

不可思議的是,從現在就叫做UIM經理建設者沒有一個單一的代碼行。 它只是初始化指針為 0,只為妄想(或不)...

該 UIM實現了創建對象和清洗槽的一塌糊塗。 當創建一個對象,這個對象的UIM連接到其槽清洗。 當對象死亡,它會激活清洗UIM插槽。 該插槽將與對象的圖形主菜單在這個例子中,一個窗口的創建。

其他對象是小窗口,對話框,應用程序配置一個,和兩個談自己(約),畢竟,營銷是重要的... ...

所有的圖形對象我點擊和拖動的Qt Designer和再調整,以讓我的方式。 沒有什麼可以調心手像素,因為它是一個藝術作品,只是一個概念證明。

圖形對象

在設置屏幕是一個組合框在一個參數列表傳遞給主窗口部件的共同對話。 我添加的細節由Qt設計器生成的代碼有一個析構函數和一對信號槽發送選定的數據回經理。 我沒有刻意去保持當前配置的軌道。 此聊天的另一職位。

在關於環訊是基本相同的代碼,加上析構函數。

主窗口有一個菜單,調用其他窗口和小部件是閃爍的瘋狂廣場滿。 方形的信息量,將改變窗口的配置。

魔術 QT

所有使用的圖形對象也QWidgets因為他們從 QWidget類繼承的類,我從下面的繼承每個構造方法的使用:

 本 - >的setAttribute(Qt的:WA_DeleteOnClose,TRUE); 

聯機文檔 ,這告訴Qt,它應該刪除小部件時關閉。 否則,它只是隱藏。

“... ...當一個部件接受關閉事件,它是隱藏的... ...”

“... ...如果你想小部件被刪除當它關閉時,它創建了Qt::WA_DeleteOnClose標誌。 這是非常獨立的頂層在一個多窗口的應用程序窗口有用的... ...“

該例程使故障,如點擊取消或關閉,對象到底是直接連接到自己的槽接近()。 這會觸發一個在對象銷毀系列活動達到高潮。

該例程的對象是成功的,並單擊確定並發送數據,分別指示返回到UIM卡,所以它可以路由它們。 在得到的數據,UIM插槽直接調用對象的close()。

當一個對象被銷毀時,他送他的最後一口氣,說,一個被摧毀(符號)。 從字面上看,他說:“我是!!!".

從“外”的對象,UIM是聽,該信號連接到日常的清潔和只見! 準備好了。

在這個例子中我使用時,屏幕上正方形的數量來對象 MyConf,通過 UIM和路由至MyApplication的。 這反過來又轉發到內部構件瘋狂。

為了獲得更有趣,而較小的窗口被打開,部件停止閃爍,返回時,艙口關閉。 這聽起來很傻,但是這只是表明,有過什麼 UIM在每個窗口中發生的完全控制,而她在焦點或不了。

結論

Qt框架是巨大的,並提供了大範圍的特點。 一種是能夠控制對象被銷毀。 使用此連同一點點規劃和信號槽系統相結合,可以構建一個非常複雜的接口,它沒有變成魔龍時間維護。

來源:

http://doc.trolltech.com

PS:完整的源代碼的例子是在GPL下,可以通過這個下載鏈接 有一天,我把它的意見 ...

修正

在初始化屬性在類的構造 MySquares沒有不幸昆蟲藏匿。 寵物,雖然小是有毒的,因為它造成了“分段錯誤”。 當啟動該程序,如果我是望其項背約,它顯示的事件,從該屏幕配置是正確的假設源於序列。 修正後的代碼在上面的鏈接,記住:

“總是初始化變量”