自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析QT Widget應(yīng)用

移動(dòng)開發(fā)
QT Widget應(yīng)用筆記是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)QT Widget應(yīng)用,具體內(nèi)容的學(xué)習(xí)來看本文詳解。

QT Widget應(yīng)用是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)QT Widget應(yīng)用,具體內(nèi)容的學(xué)習(xí)來看本文詳解。

Widget 是使用 Qt 編寫的圖形用戶界面 (GUI) 應(yīng)用程序的基本生成塊。每個(gè) GUI 組件,如按鈕、標(biāo)簽或文本編輯器,都是一個(gè) widget ,并可以放置在現(xiàn)有的用戶界面中或作為單獨(dú)的窗口顯示。每種類型的組件都是由 QWidget 的特殊子類提供的,而 QWidget 自身又是 QObject 的子類。

QWidget 不是一個(gè)抽象類;它可用作其他 widget 的容器,并很容易作為子類使用來創(chuàng)建定制 widget。它經(jīng)常用來創(chuàng)建放置其他 widget 的窗口。

至于 QObject,可使用父對(duì)象創(chuàng)建 widget 以表明其所屬關(guān)系,這可確保刪除不再使用的對(duì)象。使用 widget,這些父子關(guān)系就有了更多的意義:每個(gè)子類都顯示在其父級(jí)所擁有的屏幕區(qū)域內(nèi)。也就是說,當(dāng)刪除窗口時(shí),其包含的所有 widget 也都自動(dòng)刪除。
創(chuàng)建窗口

如果 widget 未使用父級(jí)進(jìn)行創(chuàng)建,則在顯示時(shí)視為窗口或頂層 widget。由于頂層 widget 沒有父級(jí)對(duì)象類來確保在其不再使用時(shí)就刪除,因此需要開發(fā)人員在應(yīng)用程序中對(duì)其進(jìn)行跟蹤。

在下例中,我們使用 QWidget 創(chuàng)建和顯示具有默認(rèn)大小的窗口:

  1. QWidget *window = new QWidget();  
  2. window->resize(320, 240);  
  3. window->show(); 

我們可以通過將 window 作為父級(jí)傳遞給其構(gòu)造器來向窗口添加子 widget。在這種情況下,我們向窗口添加按鈕并將其放置在特定位置:

  1. QPushButton *button = new QPushButton(tr("Press me"), window);  
  2. button->move(100, 100);  
  3. button->show(); 

該按鈕現(xiàn)在為窗口的子項(xiàng),并在刪除窗口時(shí)一同刪除。請(qǐng)注意,隱藏或關(guān)閉窗口不會(huì)自動(dòng)刪除該按鈕。

使用布局

通常,子 widget 是通過使用布局對(duì)象在窗口中進(jìn)行排列,而不是通過指定位置和大小進(jìn)行排列。在此處,我們構(gòu)造要并排排列的標(biāo)簽和行編輯框 widget。

  1. QLabel *label = new QLabel(tr("Name:"));  
  2. QLineEdit *lineEdit = new QLineEdit();  
  3.  
  4. QHBoxLayout *layout = new QHBoxLayout();  
  5. layout->addWidget(label);  
  6. layout->addWidget(lineEdit);  
  7. window->setLayout(layout); 

我們構(gòu)造的布局對(duì)象管理通過 addWidget() 函數(shù)提供的 widget 的位置和大小。布局本身是通過調(diào)用 setLayout() 提供給窗口的。布局僅可通過其對(duì)所管理的 widget(和其他布局)的效果才可顯示。

在上文示例中,每個(gè) widget 的所屬關(guān)系并不明顯。由于我們未使用父級(jí)對(duì)象構(gòu)造 widget 和布局,我們會(huì)看到一個(gè)空窗口和兩個(gè)包含了標(biāo)簽與行編輯框的窗口。不過,如果我們告知布局來管理標(biāo)簽和行編輯框,并在窗口中設(shè)置布局,兩個(gè) widget 與布局本身就都會(huì)成為窗口的子項(xiàng)。

由于 widget 可包含其他 widget,布局可用來提供按不同層次分組的 widget。這里,我們要在顯示查詢結(jié)果的表視圖上方、窗口頂部的行編輯框旁,顯示一個(gè)標(biāo)簽。

  1. QLabel *queryLabel = new QLabel(tr("Query:"));  
  2. QLineEdit *queryEdit = new QLineEdit();  
  3. QTableView *resultView = new QTableView();  
  4.  
  5. QHBoxLayout *queryLayout = new QHBoxLayout();  
  6. queryLayout->addWidget(queryLabel);  
  7. queryLayout->addWidget(queryEdit);  
  8.  
  9. QVBoxLayout *mainLayout = new QVBoxLayout();  
  10. mainLayout->addLayout(queryLayout);  
  11. mainLayout->addWidget(resultView);  
  12. window->setLayout(mainLayout); 

除了 QHBoxLayout 和 QVBoxLayout,Qt 還提供了 QGridLayout 和 QFormLayout 類來協(xié)助實(shí)現(xiàn)更復(fù)雜的用戶界面。 

小結(jié):解析QT Widget應(yīng)用的內(nèi)容介紹完了,希望通過QT Widget內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-09-07 16:28:46

QT WidgetQWidget

2011-09-07 16:36:00

Qt Widget

2011-09-08 15:40:45

Android Wid組件

2011-09-08 16:07:13

Widget配置文件

2011-09-07 16:43:38

Qt Widget

2011-09-07 16:24:10

Qt Widget

2011-06-09 09:12:12

QT symbian

2011-09-08 16:17:45

Widget

2011-09-07 14:01:41

Android Wid實(shí)例

2011-09-08 14:21:37

jQueryWidget

2011-09-09 19:23:52

Widget

2011-09-09 10:00:20

Android Wid開發(fā)

2011-09-07 17:54:40

Android Wid開發(fā)

2011-09-09 13:23:17

Widget

2011-09-09 11:05:56

Widget

2011-06-16 15:17:16

2010-05-23 11:13:53

Widget開發(fā)

2011-06-20 16:38:33

Qt QWidget Qt4.5

2011-09-07 16:57:31

QT WidgetQWidget

2011-09-07 14:39:47

Android Wid設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)