Qt Button控件的屬性說明

按鈕,常常被理解爲觸發一種動作請求或者命令,是與用戶進行指令交互的操作。Qt中Button系列根據用途被劃分爲不同的定義,其實現框架爲QAbstractButton提供按鈕的通用性功能,此爲抽象基類,所以無法進行實例化。用戶需要繼承定義此類,實現paintEvent,實現具體的展示。常見的Button有QPushButton,QToolButton,QRadioButton及QCheckBox。這種根據用戶分爲標記(toggle)的與非toggle的。此種模式用到的典型的c++一種抽象繼承模式,將Button通用的抽象到QAbstractButton類,其餘類繼承,並根據自己的特點來實現畫圖展現的功能。爲此我們從最基本的開始

   1、QAbstractButton:此爲按鈕的抽象積累,提供按鈕通用的功能。此類不能實例化,所以子類處理交互動作,尤其是如何繪製button。其爲可按按鈕(push button)和可檢查(checkable)或切換(toggle)標記按鈕提供支持。標記按鈕的實現有QRadioButton單選按鈕和QCheckBox多選框。可按俺就實現有QPushButton和QToolButton。他們都可以是標記切換,只要需要。
     按鈕都能顯示一個可以包含文字text和圖標icon的標籤label,使用setText設置文本,setIcon設置圖標。如果Button是個文本按鈕,則包含的ampersand(‘&’)符號可以添加快捷鍵shoarcut key。
   上述四種實現按鈕可同時顯示文字和圖標。
   1.1QAbstractButton可以提供大多數的Button的狀態

   1)isDown()表示按鈕button是否是pressed down按下的
   2)isChecked()表示按鈕是否被檢查或者標記切換的。只有可檢查和切換(標記)的按鈕可以標記或者取消標記checked or unchecked

   3) isEnabled()表示按鈕是否可以被用戶點按

   4)setAutoRepeat()設置按鈕是否當用戶長按按鈕可以auto-repeat(自動重複執行),屬性autoRepeatDelay和autoRepeatInterval定義瞭如何重複響應執行

   5) setCheckable()設置按鈕是否可切換或者標記的

 

   1.2 QAbstractButton提供如下信號

   1)pressed(),當鼠標在button上並點擊左鍵的時候發射。

   2)released(),當鼠標左鍵被釋放的時候

   3)clicked(bool checked=false),當鼠標首先按下pressed,然後釋放,或者快捷鍵被觸發,或者click()或者animateClick()調用

   4) toggled() 當可切換(標記)按鈕狀態改變時發射

 

   1.3 QAbstractButton抽象的按鈕屬性

   1) autoExclusive:bool  標誌自動互斥是否激活enabled。如果是激活的,那麼屬於同一父窗口的可標記chackabled按鈕和他們屬於一個互斥按鈕組表現一樣,只有一個按鈕狀態是checked標記的。
   注意,此屬性對於屬於按鈕組button group的按鈕。默認是false的,對於radio按鈕是true的 www.it165.net

   bool autoExclusive()及setAutoExclusive(bool)進行訪問與設置
   2)autoRepeat:bool標誌是否重複點按激活的,默認是關的。如果是激活的時候pressed()/released()/clicked()信號會發射,在限定的interval。

  注意:如果按鈕被按下是通過快捷鍵shortcut key,此屬性被激活並且時間是系統定義的,而不是此類定義的,信號正常發射。
  autoRepeat()和setAutoRepeat(bool)設置是否自動重複按鈕
   3) autoRepeatDelay:int 表示自動哦重複的初始延時時間。
  用autoRepeatDelay()和setAutoRepeatDelay(int)設置時間,單位ms級的
   4) autoRepeatInterval : int表示自動重複的時間間隔,setAutoRepeatInterval(int)進行設置
   5)chekcable:bool 表示button是否可以checkable標記切換,

   isCheckable()判斷是否可標記,setCheckable(bool)設置
   6)checked:bool 表示是否標記,isChecked()獲取是否被標記,setChecked(bool)設置標誌狀態

   注意,此屬性必須在checkabled的button才能使用,會觸發toggled(bool checked)信號

   7)down :bool 表示button是否按下。isDown及setDown(bool)進行設置。
   8)icon : QIcon 表示icon是否顯示在button按鈕上。icon的大小根據GUI類型定義的,但可以通過iconSize屬性設置。
     QIcon icon() : void setIcon(const QIcon &icon)
   9)text : QString 屬性保存按鈕上顯示的問題。

   通過text()獲取值,如果爲空則返回一個空串。如果字符裏面包含ampersand‘&’符號,則shortcut自動會創建。如果顯示&字符,則使用‘&&’就可以了。

   沒有默認字符串,通過setText(const QString &)設置此值。
   1.4 QAbstractButton抽象類提供的常見函數:
   1)void QAbstractButton::animateClick ( int msec = 100 ) [slot],按鈕會立即被按下pressed,並且msec時間後釋放。如果沒有釋放繼續調用此函數,則會重置釋放時間。
   所有的信號與click會被髮射。如果button是disabled,此函數不工作。
   2)void QAbstractButton::click () [slot]執行一次點按操作。所有與點按相關聯的信號都會被髮射,如果button是checkable,那麼按鈕的狀態會切換toggled。如果按鈕爲disabled則不工作
   3)void QAbstractButton::toggle () [slot] 切換按鈕的狀態,會觸發toggled(bool checked)信號


   2、QPushButton,是QAbstractButton的實現體。是一個command按鈕,點擊其執行一些動作或者響應一些問題,常見場景如ok,apply,cancel yse no help等。

    命令按鈕常用文本表示他的動作。
   按鈕最重要的狀態是:

   是否可用(disabled or enabled)
   標準的push button 或者togglebutton 或者menu button

   開啓或者關閉(on or off),僅針對可切換按鈕
   default還是normal,默認按鈕一般會被點擊,在一個對話框裏使用確定或返回鍵的時候
   auto-repeat自動重複
   pressed down 是否被按下
   另外一個命令按鈕的一個變體是菜單按鈕。不僅提供一個命令,當其點擊時會彈出一個菜單選項。使用setMenu方法可以將此按鈕與彈出菜單選項關聯

    在一個對話框,按鈕可以設置爲default 和auto-default按鈕。比如當對話框接受焦點的時候其自動獲取焦點,可以使用setAutoDefault()設置。
    需要注意的是auto-default按鈕會佔用稍微多一點的空間,及比一個正常按鈕寬,用於匯話默認按鈕的indicator標記,如果不需要則設置setAutoDefault(false)就可以了

    2.1 添加屬性:
    1)autoDefault:bool
    此屬性保持命令按鈕是否自動默認按鈕,即auto default button
    2)default:標誌此命令按鈕是一個默認按鈕。
    通過bool isDefault()獲取、setDefault(bool)設置此屬性


    default和autoDefault屬性決定了當用戶在一個對話框按enter時發生的事情
    如果一個屬性被設置了default,則此按鈕自動發射pressed信號,除非autoDefault按鈕當前獲取了焦點,則autoDefault按鈕pressed被髮射。
    如果對話框dialog只有autoDefault按鈕沒有default按鈕,則當前獲取焦點的autoDefault按鈕發射pressed,或者沒有獲取焦點的按鈕,則下一個焦點連的按鈕被髮射。
   一個對話框只有一個按鈕是default默認按鈕,此按鈕需要額外的空間表示。
   默認按鈕default行爲只在對話框使用。獲取焦點的按鈕總是可以被點擊通過鍵盤的空格鍵
    3) flat:bool表示是否顯示按鈕的border邊框
     bool isFlat()獲取,setFlat(bool)進行設置。
   默認值爲false,如果設置爲true,大多數情況,此按鈕的背景不會繪畫出來,除非按鈕被點擊。
   setAutoFillBackground()可以用於保證背景可以使用QPalette::Button 格式刷繪畫出來。
   2.2 常見函數:
   QPushButton::QPushButton ( QWidget * parent = 0 )
   QPushButton::QPushButton ( const QString & text, QWidget * parent = 0 )
   QPushButton::QPushButton ( const QIcon & icon, const QString & text, QWidget *parent = 0 )
  創建一個命令按鈕text用於描述,QIcon用於顯示小圖標
   QMenu * QPushButton::menu () const
   獲取與button關聯的彈出菜單,如果沒有關聯菜單返回0


   void QPushButton::setMenu ( QMenu * menu )
   關聯一個菜單到按鈕上,這樣按鈕就形成了菜單按鈕

 

   void QPushButton::showMenu () [slot]
   顯示與button相互關聯的按鈕,如果沒有則什麼都不操作。

   此函數知道彈出菜單被關纔會返回。


   3、QRadioButton:單選按鈕

   單選按鈕提供一個按鈕和一個label,label用於顯示對應的文本信息。
   單選按鈕是一種開關按鈕,可以切換爲on或者off即checked或者unchecked。主要用途用於提供給用戶‘one of many’選擇。如果用戶選擇另外一個單選按鈕,則之前的就被反選了。默認是autoExclusive的,如果是激活的,屬於同一個父類的單選按鈕只能選中一個,如果需要多個
exclusive互斥選項在同一個父窗口使用,則將他們方知道QButtonGroup內。
   不管切換開關都會發射toggle信號發射。
   和QPushButton一樣,一串文本顯示內容,文本加&會自動創建快捷鍵
   設置文本或icon使用抽象類的接口setText及setIcon實現。


   4、QCheckBox:複選框,提供一個checkbox和一個文本label

   同QRadioButton,是一個開關按鈕,可切換狀態on或者off,即checked或者unchecked。
  一般,此複選框可以enable或者disable但不影響其他複選按鈕。但是如果此放置到一個互斥的QButtonGroup裏面,則只能選一個複選框。這是有互斥選項的QButtonGroup所限定的屬性。
   當checkbox複選框是checked標記或者清楚,都會觸發stateChangeed信號。可以使用isChecked()去查詢複選框按鈕是否標記。
   除了常用的選中與沒選中狀態,QCheckBox提供第三種狀態即“沒有改變”狀態。這是很有用的,當你給用戶一個既不選擇又不反選的複選框。如果使用此狀態,設置其屬性setTristate(),然後用checkState()去查詢當前標記切換的狀態。
   4.1 tristate:bool 表示此複選框是否是一個tri-state三態複選框
   bool isTristate() setTristate(bool)查看及設置
   4.2 常用函數:

   Qt::CheckState QCheckBox::checkState () const
   查看複選框的狀態,如果不需要tristatus,直接可以用isChecked,其返回boolean值


   void QCheckBox::setCheckState ( Qt::CheckStatestate )
   設置當前複選框的狀態。如果不需要支持tristate,則可以直接用setChecked(bool)

   stateChanged(int state)信號:當複選框狀態改變時。


   5、QToolButton:顧名思義,就是工具操作相關的按鈕。其是一種快速訪問按鈕命令或選項。所以通常和QToolBar搭配使用。工具按鈕通常不顯示文本,而顯示圖標QIcon。其主要搭配QToolBar上的QAction行爲創建和使用的。

   一般QToolButton會在QToolBar::addAction時創建,或者已經存在的action添加到QToolBar時創建。當然此按鍵肯定可以與普通案件一樣初始化和使用。

QToolButton支持自動強制顯示模式。可以使用setAutoRaise()設置按鈕浮動。
  QToolButton一個經典用法就是可以選擇工具,及此按鈕有開關之分,比如繪畫圖裏面使用畫筆,選擇此按鈕可以畫東西了。
   工具按鈕圖標設置爲QIcon,這就可以區分不同的分辨率,在disabled和active活躍狀態。如果按鈕的功能不可用,則使用非使能disabled像素,激活的pixmap像素在按鈕漂浮的時候顯示,因爲鼠標在上面。
   工具按鈕外觀和特點可以通過設置按鈕風格setToolButtonStyle和設置setIconSize修改。
   QToolButton另外一個選擇是彈出菜單,彈出菜單可以使用setMenu和setPopupMode()配置不同的可用的按鈕攜帶一個菜單集合。彈出列表可以使用setPopupDelay。
    5.1 屬性:arrowType,箭頭屬性,按鈕是否顯示一個arrow代替正常的icon,默認顯示Qt::NoArray
   Q::ArrowType指箭頭,顯示爲Qt::NoFocue,
enum Qt::ArrowType
ConstantValue
Qt::NoArrow   0  
Qt::UpArrow   1  
Qt::DownArrow   2  
Qt::LeftArrow   3  
Qt::RightArrow   4   表示箭頭,setArrowType設置對應箭頭顯示位置
autoRaise懸浮框,是否變遷。
popupMode:描述彈出菜單屬性,
toolButtonStyle:表示按鈕文本和圖片顯示位置
 
t::ToolButtonIconOnly   0   Only display the icon.  
Qt::ToolButtonTextOnly   1   Only display the text.  
Qt::ToolButtonTextBesideIcon   2   The text appears beside the icon.  
Qt::ToolButtonTextUnderIcon   3   The text appears under the icon.  
Qt::ToolButtonFollowStyle   4   Follow the style.  
toolButtonS顯示文本和圖片
 
t::ToolButtonIconOnly   0   Only display the icon.  
Qt::ToolButtonTextOnly   1   Only display the text.  
Qt::ToolButtonTextBesideIcon   2   The text appears beside the icon.  
Qt::ToolButtonTextUnderIcon   3   The text appears under the icon.  
Qt::ToolButtonFollowStyle   4  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章