成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解 QT 主要類 QWidget

移動開發
QWidget類是所有用戶界面對象的基類,每一個窗口部件都是矩形,并且它們按Z軸順序排列的。一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。 先來看內容。

QT 主要類 QWidget 是本文介紹的內容,QWidget類是所有用戶界面對象的基窗口部件是用戶界面的一個原子:它從窗口系統接收鼠標、鍵盤和其它事件,并且在屏幕上繪制自己的表現。每一個窗口部件都是矩形,并且它們按Z軸順序排列的。一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。

每一個窗口部件構造函數接受兩個或三個標準參數:

QWidget *parent = 0是新窗口部件的父窗口部件。如果為0(默認),新的窗口部件將是一個***窗口部件。如果不是,它將會使parent的一個孩子,并且被parent的幾何形狀所強迫(除非你指定WType_TopLevel作為窗口部件標記)。
const char *name = 0是新窗口部件的窗口部件名稱。你可以使用name()來訪問它。窗口部件名稱很少被程序員用到,但是對于圖形用戶界面構造程序,比如Qt設計器,是相當重要的(你可以在Qt設計器中命名一個窗口部件,并且在你的代碼中使用這個名字來連接它)。dumpObjectTree()調試函數也使用它。
WFlags f = 0(在可用的情況下)設置窗口部件標記,默認設置對于幾乎所有窗口部件都是適用的,但是,舉例來說,一個沒有窗口系統框架的***窗口部件,你必須使用特定的標記。

你自己將需要為你的窗口部件提供內容,但是這里是一些簡要的運行事件,從最普通的開始:

paintEvent() - 只要窗口部件需要被重繪就被調用。每個要顯示輸出的窗口部件必須實現它并且不在paintEvent()之外在屏幕上繪制是明智的。

resizeEvent() - 當窗口部件被重新定義大小時被調用。

mousePressEvent() - 當鼠標鍵被按下時被調用。有六個鼠標相關事件,但是鼠標按下和鼠標釋放事件是到目前為止最重要的。當鼠標在窗口部件內或者當它使用grabMouse()來捕獲鼠標時,它接收鼠標按下事件。

mouseReleaseEvent() - 當鼠標鍵被釋放時被調用。當窗口部件已經接收相應的鼠標按下事件時,它接收鼠標釋放事件。這也就是說如果用戶在你的窗口部件內按下鼠標,然后拖著鼠標到其它某個地方,然后釋放,你的窗口部件接收這個釋放事件。這里有一個例外:如果出現在彈出菜單中,當鼠標鍵被按下時,這個彈出菜單立即會偷掉這個鼠標事件。

mouseDoubleClickEvent() - 和它看起來也許不太一樣。如果用戶雙擊,窗口部件接收一個鼠標按下事件(如果他們沒有拿牢鼠標,也許會出現一個或兩個鼠標移動事件)、一個鼠標釋放事件并且最終是這個事件。直到你看到第二次點擊是否到來之前,不能從一個雙擊中辨別一個點擊。(這是為什么絕大多數圖形用戶界面圖書建議雙擊是單擊的一個擴展,而不是一個不同行為的觸發的一個原因。)

如果你的窗口部件僅僅包含子窗口部件,你也許不需要實現任何一個事件處理器。如果你想檢測在子窗口部件中的鼠標點擊,請在父窗口部件的mousePressEvent()中調用子窗口部件的hasMouse()函數。

接收鍵盤的窗口部件需要重新實現一些更多的事件處理器:(詳見http://www.qtopia.org.cn/doc/qiliang.net/qt/qwidget.html#details )

QTime類提供了時鐘時間功能。

QTime對象包含時鐘時間,比如從午夜開始的時、分、秒和毫秒數。它可以從系統時鐘中讀取當前的時間并且度量時間的跨度。它提供比較時間和操作時間的函數,比如加上一定的秒或毫秒。

QTime操作的是24小時時鐘格式,它沒有AM/PM概念。它操作的是本地時間,它不知道有關時區或白天時間的概念。

QTime對象通常可以由明白地給定的時、分、秒和毫秒數字來創建,或者使用靜態函數currentTime()讓QTime對象包含系統時鐘時間。注意精確性取決于下面操作系統的精確性,不是所有的操作系統都有毫秒級精確度的。

hour()、minute()、second()和msec()函數提供了對時、分、秒和毫秒數字的訪問。toString()提供了文本格式的相同信息。

一個給定時間之后給定的秒或毫秒數的時間可以使用addSecs()或addMSecs()得到。相對地,兩個時間的秒(或毫秒)數可以使用secsTo()或msecsTo()得到。

QTime可以使用start()、restart()和elapsed()函數度量流逝的時間。

  1. QTime QTime::currentTime () [靜態]  

返回當前時間,來自于系統時鐘。

QTimer類提供了定時器信號和單觸發定時器。

它在內部使用定時器事件來提供更通用的定時器。QTimer很容易使用:創建一個QTimer,使用start()來開始并且把它的timeout()連接到適當的槽。當這段時間過去了,它將會發射timeout()信號。

注意當QTimer的父對象被銷毀時,它也會被自動銷毀。

實例:

  1. QTimer *timer = new QTimer( myObject );          
  2. connect( timer, SIGNAL(timeout()), myObject, SLOT(timerDone()) );          
  3. timer->start( 2000, TRUE ); // 2秒單觸發定時器   

你也可以使用靜態的singleShot()函數來創建單觸發定時器。

作為一個特殊情況,一旦窗口系統事件隊列中的所有事件都已經被處理完,一個定時為0的QTimer就會到時間了。

這也可以用來當提供迅速的用戶界面時來做比較繁重的工作。

  1. QTimer *t = new QTimer( myObject );          
  2. connect( t, SIGNAL(timeout()), SLOT(processOneThing()) );          
  3. t->start( 0, FALSE );      
  4. myObject->processOneThing() 

將會被重復調用并且應該很快返回(通常在處理一個數據項之后),這樣Qt可以把事件傳送給窗口部件并且一旦它完成這個工作就停止這個定時器。這是在圖形用戶界面應用程序中實現繁重的工作的一個典型方法,現在多線程可以在越來越多的平臺上使用,并且我們希望無效事件最終被線程替代。

注意QTimer的精確度依賴于底下的操作系統和硬件。絕大多數平臺支持20毫秒的精確度,一些平臺可以提供更高的。如果Qt不能傳送定時器觸發所要求的數量,它將會默默地拋棄一些。

另一個使用QTimer的方法是為你的對象調用QObject::startTimer()和在你的類中(當然必須繼承QObject)重新實現QObject::timerEvent()事件處理器。缺點是timerEvent()不支持像單觸發定時器或信號那樣的高級水平。

一些操作系統限制可能用到的定時器的數量,Qt會盡力在限制范圍內工作。

QButton類是按鈕窗口部件的抽象基類,提供了按鈕所共有的功能。

如果你想創建一個按鈕,請使用QPushButton。 http://www.qtopia.org.cn/doc/qiliang.net/qt/qbutton.html

QButton類實現了一個抽象按鈕,并且讓它的子類來指定如何回復用戶的行為和如何畫按鈕。

QButton提供了推動和切換按鈕。QRadioButton和QCheckBox類只提供了切換按鈕,QPushButton和QToolButton提供了切換按鈕和推動按鈕。

任何按鈕都可以有一個文本的或者像素映射的標簽。setText()設置按鈕為一個文本按鈕并且setPixmap()設置它為一個像素映射按鈕。文本/像素映射的使用中需要創建當按鈕被取消使用時所需的“失效的”外觀。

QButton提供了按鈕所要用到的絕大多數狀態:

isDown()決定按鈕是否被按下。

isOn()決定按鈕是否是開的。只有切換按鈕才能被切換為開或關(請看下面)。
isEnabled()決定按鈕是否可以被用戶按下。

setAutoRepeat()決定如果用戶按下按鈕,按鈕是否可以自動回復。

setToggleButton()決定按鈕是否是一個切換按鈕。

isDown()和isOn()的不同點如下:當用戶點擊一個切換按鈕并且把它切換為開,按鈕首先被按下并且然后被釋放變為開狀態。當用戶再次點擊(切換為關),按鈕首先移動到被按下狀態,然后變為關狀態(isOn()和isDown()都為假)。

默認按鈕(在很多對話框中被使用的)由QPushButton::setDefault()和QPushButton::setAutoDefault()提供。

QButton提供五個信號:

當鼠標光標在按鈕內,鼠標左鍵被按下時,pressed()被發送。

當鼠標左鍵被釋放時,released()被發送。

當按鈕首先被按下然后又被釋放或者快捷鍵被按下,或者當animateClick()被調用時,clicked()被發送。

當切換按鈕的狀態變化時,toggled(bool)被發送。

當一個三態切換按鈕的狀態變化時,stateChanged(int)被發送。

如果一個文本按鈕的文本中有“&”,QButton會創建一個自動快捷鍵。下面的代碼創建一個標簽為“Rock & Roll”(c下面有下劃線)的推動按鈕。這個按鈕有一個自動快捷鍵,Alt+C:

QPushButton *p = new QPushButton( "Ro&ck && Roll", this );  在這個實例中,當用戶按下Alt+C時,按鈕將會調用animateClick()。

你也可以使用setAccel()函數來設置一個定制的快捷鍵。這個對于絕大多數像素映射按鈕是很有用的,因為它們沒有自動快捷鍵。

QPushButton *p;    p->setPixmap( QPixmap("print.png") );    p->setAccel( ALT+Key_F7 );  Qt所提供的所有按鈕(QPushButton、QToolButton、QCheckBox和QRadioButton)都能夠既顯示文本也顯示像素映射。

為了繼承QButton,你至少不得不重新實現drawButton()(繪制按鈕的外形)和drawButtonLabel()(繪制它的文本或像素映射)。通常也被建議重新實現sizeHint(),并且有時也被建議重新實現hitButton()(為了決定一個按鈕按下是否在按鈕內)。

為了減少閃爍,QButton::paintEvent()設置drawButton()中所要畫的一個像素映射。你不用在QButton的子類中重新實現paintEvent(),除非你想接管全部的繪制工作。

小結:關于詳解 QT 主要類 QWidget 的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: CSDN博客
相關推薦

2011-06-16 11:13:13

QtQWidget

2011-06-28 11:05:19

Qt QWidget Eventable

2011-06-24 15:06:40

QT

2011-06-24 14:17:58

Qt 容器類 QVector

2011-03-18 19:37:38

Eventable接口QtWidget

2011-06-15 17:28:23

Qt 多視圖 架構

2011-06-16 11:28:48

Qt QApplicati

2011-06-24 10:05:51

QT 對象 父對象

2011-06-20 17:33:58

Qt MeegoTouch Maemo

2011-06-28 15:01:01

Qt PIMPL

2011-06-21 18:02:14

Qt 動態 鏈接庫

2011-06-23 14:05:32

Qt 事件機制

2011-06-14 15:45:02

Qt Object

2024-12-11 13:14:27

2011-08-16 19:27:53

ORACLE GOLD

2011-06-14 11:48:38

Webkit QT

2011-06-24 14:34:17

Qt 小票 打印

2011-06-20 14:27:57

Qt Embedded

2011-06-30 14:34:17

QT Tablewidge QTableWidg

2011-04-02 09:17:38

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品国产精品 | 亚洲国产精品va在线看黑人 | 四虎午夜剧场 | 欧美一区二区三区在线看 | 亚洲黄色网址视频 | 蜜桃视频在线观看www社区 | 91精品国产91久久久久久吃药 | 久久久视频在线 | 高清免费av | 免费看国产一级特黄aaaa大片 | 亚洲国产精品自拍 | 久久久夜色精品亚洲 | 黄片毛片免费观看 | 亚洲性在线 | 国产电影精品久久 | 四虎永久影院 | 国产高清精品网站 | 国产精品久久久久久久久久久久久 | 国产福利在线 | av中文在线| 中国一级特黄真人毛片免费观看 | 97伦理| 在线成人免费观看 | 波多野结衣一区二区 | 日朝毛片| 午夜网 | 久久久久久久久国产成人免费 | 婷婷综合网 | 综合网视频 | 国产天堂 | jlzzjlzz国产精品久久 | 国产精品一区二区无线 | 久久亚洲春色中文字幕久久久 | 色毛片 | 玖玖国产| 亚洲小视频 | 一区二区三区亚洲 | 亚洲福利 | 天天射天天干 | 国产精品久久99 | 免费国产视频在线观看 |