第一節:hello,world

第一個程式僅僅是一個hello-world例副程式。它僅含一些能夠使這個程式運行起來的一些必要的代碼。上面的圖片是這個程式一張照片。
/**********************************************************************
**
**Qt指南 第一節
**
**********************************************************************/
#include <qapplication.h>
#include <qpushbutton.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton hello( "Hello world!", 0 );
hello.resize( 100, 30 );
a.setMainWidget( &hello );
hello.show();
return a.exec();
}

逐行展示:

#include 
這一行把Qapplication類的定義包含進來.在每一個Qt應用程式中必需有一個Qapplication 物件。Qapplication管理著所有的application-wide資源,例如默認字體和游標。
#include 
這一行把Qpushbutton的定義包含進來。在參考文檔中,提及的第一個類都要在需要文件的頂部被包含進來。 Qpushbutton是一個典型的GUI下壓按鈕,它能夠被用戶按下和釋放。像每一個其他特件一樣,它能夠設置自己的外觀和感覺。物件是用來處理用戶輸入和拖拽操作的用戶介面。程式師可以改變它的全部的外觀和感覺以及其他的一些次要的屬性,例如顔色,也可以是內容。一個Qpushbutton可以顯示文字或點陣圖。
int main(int argc,char * argv){
main()函數是程式的進入點。在大多數情況下,當我們使用Qt時,main()僅僅是在進入控制Qt庫之前進行一些初始值的設定,它將告認程式用戶操作事作的一些情況.
argc是中命令行中參數的個數,argv是命令行參數陣列。這是一個C/C++特徵。這並不是Qt特有的,雖然Qt執行這些參數(看下面)。
Qapplication a(argc,argv);
a 是這個程式的Qapplication。在這裏它被創建並執行一些命令行參數(就像在X11下的 -display 一樣)。注意,所有被Qt識別出的命令行參數將會被從argv中移除(並且argc將會相應的減少)。有關的細節請參閱QApplication::argv() 文檔。
注意:在Qt中,在進入window-system之前建立QApplication物件是最重要的。
QPushButton hello("hello world",0);
在這裏,在建立QApplication之後,進入Window-system的第一句代碼:一個Push Button被建立了。
這個按鈕被設置成顯示文本“hello world”,並且它自己成爲一個視窗(因爲按鈕要進入的父視窗被設置成爲了“0”)。
hello.resize(100,30); 這個視窗被設置成了100圖元寬,30圖元高(加上window-system框架)。在這裏這不必關心這個按鈕的位置,接受它的預設值就行了。
a.setMainWidget(&hello);
在這個應用中,這個按鈕被選擇成爲main物件。如果用戶關閉了main物件,這個應用就會退出。
您不必一定要有main物件,但大多數程式都有.
hello.show();
當物件被創建時它不會被顯示。您必須呼叫show()便其可見。
return a.exec();
當這個應用程式退出時,這裏是main()把控制權交給Qtexec() 的地方。
exec()中,Qt接收到並執行用戶或系統事件並把這些交給適當的物件。
}

行動:

您可以試著編譯並執行這個程式。
當您運行它時,您將會看到一個小的視窗,它被一個小按鈕填充著,並且您能看到這個有名的“hello world”

練習:

試著去改變窗口的大小。按一下按鈕。如果您運行的是X11,試著用-geometry(e.g. -gemometry 100x200+10+20) 選項運行它。
現在您可以進行第二節了。 

第二節:呼叫“退出”
在第一節我們建立一個視窗,現在我們使這個應用程式在用戶發出退出信號時能夠退出。
我們也將使用一個比默認字體更讓人激動的字體。

/****************************************************************
**
** Qt tutorial 2
**
****************************************************************/

#include 
#include 
#include 

int main( int argc, char **argv )
{
QApplication a( argc, argv );

QPushButton quit( "Quit", 0 );
quit.resize( 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );

QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );

a.setMainWidget( &quit );
quit.show();
return a.exec();
}

逐行展示:
#include <qfont.h>
因爲這個程式使用了QFont, 所以需要包含文件qfont.hQt的字體抽象同X提供的字體是不同。裝載和使用這些字體都是被進行過高質最的最優化處理。
QPushButton quit("quit",0);
這一次,這個按鈕被命名爲“Quit”,並有當用戶按這個按鈕時也確實讓它這麽做。這並不一種巧合。我們仍然用0做爲它的父視窗,因爲這個按鈕是一個頂級視窗
quit.resize(75,30);
我們爲按鈕選取另外一個尺寸,因爲這次要顯示的文本比"hello world"要稍微短一點。我們也可以使用QFontMetrics來設置合適的大小。
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
這裏,我們爲按鈕選取一個新的字體,Time字體中的18點粗。 注意我們是在點的基礎上的建立字體的。
使用改變默認字體的方法(使用QApplication::setFont())來改變整個應用程式的字體也是可以的。
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
connect()可能是Qt最重的特徵。注意: connect()是一個Qwidget靜態函數。不要被socket()函數庫中的connect()函數弄糊塗了。
這一行爲兩個Qt物件間的聯繫建立了一種方法,這些物件包括QObject的繼承類,直接的,間接的。每一個Qt物件都包括信號(用來發送消息)和槽(用來接收消息)。所有的物件都是Qt物件。他們繼承QWidget而成爲QObject的繼承類。
在這裏,quitclicked()信號同aquit()槽聯繫起來,這樣,當按鈕被單擊時這個應用就會退出。
信號與槽文檔(the Singal and Solts documentation 這個文檔在Qt的官方網站可以找到,譯者注)將會就這個問題進行詳細的描述。

行爲:
當您運行這個程式時您將會看到一個比第一節更小的窗口,並且被一個比第一節更小的按鈕填充著。 
練習:
試著調整窗口的大小。按一下按鈕。呀! connect()看起來使程式做了一點不同的事。
有其他的信號可以用來聯結quit()嗎?關鍵:QPushButton繼承了QButton的大部分行爲


延申閱讀 - 你也想知道的「學習筆記」:

【學習筆記】如何移除Windows 10升級後,Windows.old系統備份檔案

【學習筆記】Tcl 語法

【學習筆記】10個專業免費的Google Blogger響應式主題模板推薦!FREE

【學習筆記】如何在3分鐘內快速創建一個免費的Blog?新手也能立即上手!

【學習筆記】WordPress 4.5.1 安裝與設定教學

【學習筆記】XAMPP 7.4.3 安裝與設定教學

【學習筆記】XAMPP 7.4.3 + WordPress 5.4.1 下載教學

【學習筆記】如何移除Windows 10應用程式與功能中殘存的項目。

【學習筆記】如何讓Windows 7 自動登入,Windows 10 也適用!

【學習筆記】如何移除Windows 10 內建的應用程式,例如新聞、郵件、行事曆等等。

【學習筆記】如何設定Linux 開機後自動執行某個 script


arrow
arrow
    全站熱搜

    Good.info5790 發表在 痞客邦 留言(0) 人氣()