Qt Widgets——抽象按鈕及其繼承類


QAbstractButton是有關“按鈕”的基類

描述了一個按鈕應該具有的組成。它的公有函數如下:

QAbstractButton(QWidget * parent = 0)  
~QAbstractButton()  
  
QIcon   icon() const//按鈕上的圖標  
QSize   iconSize() const  
  
void    setAutoExclusive(bool)//自動互斥,設置后,同屬一個父對象的按鈕將表現為一個選中(checked),另一個自動轉為未選,默認false  
void    setAutoRepeat(bool)  
void    setAutoRepeatDelay(int)  
void    setAutoRepeatInterval(int)  
void    setCheckable(bool)//設置是否可選中  
void    setDown(bool)//設置是否按鈕按下,和checked效果一樣,但信號pressed()和clicked()不再發送  
void    setIcon(const QIcon & icon)//設置圖標  
void    setShortcut(const QKeySequence & key)//設置快捷鍵  
void    setText(const QString & text)//設按鈕上的文件  
  
QKeySequence    shortcut() const  
QButtonGroup *  group() const//返回按鈕所屬的組  
QString text() const  
  
bool    isCheckable() const  
bool    isChecked() const  
bool    isDown() const  
  
bool    autoRepeat() const  
int autoRepeatDelay() const  
int autoRepeatInterval() const  
bool    autoExclusive() const  
 

windows的checked(如圖右)

信號有:

Signals  
void    clicked(bool checked = false)//點擊(按下后放開)  
void    pressed()//按下  
void    released()//放開時發送  
void    toggled(bool checked)  

toggled是切換的意思,只有狀態變化時觸發,對按鈕,當它設置checkble為true時,點擊后,從未按下的普通狀態轉變成按下的選中狀態,這時將發送toggled信號。

槽函數有:

Public Slots  
void    animateClick(int msec = 100)//在按下到松開的時間內,按msec(毫秒)參數計時,不斷地重復調用這個槽  
void    click()  
void    setChecked(bool)  
void    setIconSize(const QSize & size)  
void    toggle()  

——————————————————————————————————————————————————————

QPushButton是最為常用的小部件了,它有如下函數:

QPushButton(QWidget * parent = 0)  
QPushButton(const QString & text, QWidget * parent = 0)  
QPushButton(const QIcon & icon, const QString & text, QWidget * parent = 0)  
~QPushButton()  
bool    autoDefault() const  
bool    isDefault() const  
bool    isFlat() const  
QMenu * menu() const  
void    setAutoDefault(bool)  
void    setDefault(bool)//設置為“默認”時,窗口的默認焦點就在它上面,按Enter鍵時,相當於點擊了它  
void    setFlat(bool)//平面化,不繪制按鈕的背景,設置后,外觀與標簽相似  
void    setMenu(QMenu * menu)//將這個按鈕轉化成一個帶有向下小箭頭的下拉菜單按鈕  

信號與槽部分,主要與上述抽象按鈕相同。

但它多了以下槽,用於顯示菜單

void    showMenu()  

示例及菜單效果如下:

//以下帶菜單的按鈕  
    menu1=new QMenu("n1");  
    menu1->addAction("文件(&F)");  
    ui->pushButton->setMenu(menu1);  
    //以下帶圖標的按鈕  
    QIcon ico("arrow.png");  
    ui->pushButton_2->setDefault(true);  
    ui->pushButton_2->setIcon(ico);  
    ui->pushButton_2->setIconSize(QSize(20,20));  
    //以下是“命令鏈接按鈕”  
    ui->commandLinkButton->setText("下一步");  
    ui->commandLinkButton->setDescription("這是按鈕的描述");  

——————————————————————————————————————————————————————

QCommandLinkButton為"命令鏈接按鈕"

用於程序的界面切換,如一般程序安裝時的下一步,表示將打開一個新窗口,外觀類似於一個Flat按鈕,如上圖。

函數如下:

QCommandLinkButton(QWidget * parent = 0)  
QCommandLinkButton(const QString & text, QWidget * parent = 0)  
QCommandLinkButton(const QString & text, const QString & description, QWidget * parent = 0)  
~QCommandLinkButton()  
QString description() const  
void    setDescription(const QString & description)//在按鈕下方添加描述,按鈕尺寸過小時會隱藏  
————————————————————————————————————————————————

QToolButton為工具按鈕,可用於制作一個彈出菜單。

公有函數如下:

(Arrow為箭頭,是圖標,Qt自帶一些常用的圖標)

QToolButton(QWidget * parent = 0)  
~QToolButton()  
Qt::ArrowType   arrowType() const  
bool        autoRaise() const  
QAction *   defaultAction() const  
QMenu *     menu() const  
ToolButtonPopupMode popupMode() const//彈出模式  
void    setArrowType(Qt::ArrowType type)//設置圖標  
void    setAutoRaise(bool enable)//是否自動升高,外觀,與扁平Flat相對  
void    setMenu(QMenu * menu)//添加菜單  
void    setPopupMode(ToolButtonPopupMode mode)//設置彈出模式,為枚舉型  
Qt::ToolButtonStyle toolButtonStyle() const  

彈出模式有如下

enum    ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup }  

DelayedPopup為延遲彈出(默認),持續按下一定時間后彈出菜單;MenuButtonPopup, 在按鈕右方顯示一個小箭頭,按下后就彈出;InstantPopup,點擊后即刻彈出
setArrowType可設置圖標(無圖標與上下左右箭頭)下方示例即使用了向左箭頭:

Constant Value
Qt::NoArrow 0
Qt::UpArrow 1
Qt::DownArrow 2
Qt::LeftArrow 3
Qt::RightArrow 4

示例代碼如下

//工具按鈕制作彈出菜單  
   QMenu *menu=new QMenu();  
   menu->addMenu(tr("0"));  
   menu->addMenu(tr("1"));  
   menu->addMenu(tr("3"));  
   ui->toolButton->setArrowType(Qt::LeftArrow);  
   ui->toolButton->setPopupMode(QToolButton::MenuButtonPopup);  
   ui->toolButton->setMenu(menu);  

效果如下:

它還有如下槽函數:

void    setDefaultAction(QAction * action)  
void    setToolButtonStyle(Qt::ToolButtonStyle style)// 用於設置樣式,如顯示文本的位置等  
void    showMenu()  
Constant Value Description
Qt::ToolButtonIconOnly 0 只顯示圖標
Qt::ToolButtonTextOnly 1 只顯示文本
Qt::ToolButtonTextBesideIcon 2 文本顯示在圖標旁
Qt::ToolButtonTextUnderIcon 3 文本顯示在圖標下方
Qt::ToolButtonFollowStyle 4 Follow the style.

 

——————————————————————————————————————————————————————

QRadioButton(單選按鈕)與QCheckBox(復選框)

用於用戶對多個選項的選擇,正如它們的名字一個,它們分別一般用於多個中選其中一個及多個中選擇多個。

如果多個QRadioButton處於同一個父對象中,他們會互斥,也就是說只能選中其中的一個;而QCheckBox則不一樣,它們默認是可多選的,除非設置互斥。

它們外觀如下(左方為單選按鈕):

使用時,主要用if檢查它們是否被選中(checked)

if(RadioButton1->isChecked)

{

}

也可以使用從它們父對象中繼承來的下列槽函數:

void    clicked(bool checked = false)  
void    toggled(bool checked)  

QCheckBox支持三種狀態的變化,所謂三態,即除了未選中及選中外還有第三種狀態,官網叫做PartiallyChecked(部分選中)。

它的函數如下:

QCheckBox(QWidget * parent = 0)  
QCheckBox(const QString & text, QWidget * parent = 0)  
~QCheckBox()  
Qt::CheckState  checkState() const//判斷所處的狀態  
bool    isTristate() const  
void    setCheckState(Qt::CheckState state)//設置處於三態中的一態  
void    setTristate(bool y = true)//設置三態的支持,默認不支持  

判斷所處的狀態,Qt::CheckState的值有如下:

Qt::Unchecked 0 未選中
Qt::PartiallyChecked 1 部分選中
Qt::Checked 2 選中

第三態外觀如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM