1. 程式人生 > >Qt文件譯:QPushButton

Qt文件譯:QPushButton

0.詳細介紹

QPushButton類提供了一個命令的按鈕.它可以說是圖形介面中最常用的控制元件之一了.點選按鈕來執行一些計算機的命令,或者回答一些問題.常用的按鈕有:OK, Apply, Cancel, Close, Yes, No and Help等.按鈕通常是矩形的,在按鈕上通過文字來顯示描述它的動作作用.可以在按鈕的文字中使用’&’來給該按鈕設定快捷鍵.比如:

//快捷鍵為alt+d.
QPushButton *button = new QPushButton("&Download", this);

按鈕上可以顯示一個文字標籤,也可以設定一個圖示.這些可以通過建構函式來設定,也可以隨時呼叫setText()和setIcon()進行設定.

如果按鈕是禁用的,也就是未被啟用的,則文字和圖示的外觀預設呈現的是灰色的,看起來就好像是禁用的.

當滑鼠點選按鈕,快捷鍵按下按鈕時,按鈕會發出clicked()訊號.我們需要讓執行的動作與這個訊號連線起來.按鈕類也提供了pressed()和released()等較少使用的方法,常用的是clicked()方法,當手動呼叫後相當於發出訊號被的操作.也就是emit操作.

常用的模式情況:

Available or not (grayed out, disabled).//禁用的.
Standard push button, toggling push button or menu button.標準按鈕,按下和選單按鈕.
On or
off (only for toggling push buttons).//切換開關. Default or normal. The default button in a dialog can generally be "clicked" using the Enter or Return key.//正常還是預設.預設情況則可以直接被空格或Enter回車鍵觸發. Auto-repeat or not.//是否可以重複觸發. Pressed down or not.//是否按下.

通常來說,如果是正方形的按鈕,且是為了修改一些狀態(如QFileDialog右上角的按鈕等)使用的都是QToolButton工具按鈕.Qt為按鈕類提供了一個特殊的QToolButton按鈕類.

如果你想要按鈕能夠支援按下和彈起操作,可以使用setCheckable()方法來進行設定.或者希望通過滑鼠一直按下,重複啟用訊號,可以呼叫setAutoRepeat()方法.但是QPushButton可能不是最好的選擇,最好還是使用QToolButton類.

選單按鈕也是QPushButton按鈕的一個變體.它不單單隻提供了一種命令動作,而是好多個,當它被點選的時候會彈出一個選單,我們可以通過呼叫setMenu()方法來設定彈出的選單.

除此之外的按鈕類常用選擇控制元件還有QCheckButton和QRadioButton等.

1.常用方法介紹

  • 1.1
    :在QDialog中,autoDefault屬性決定了按下Enter能否產生反應,而default屬性決定了按下空格鍵能否產生反應.但有時設定了default的按鈕也能相應Enter.而在QWidget和主窗體中不必糾結default和autoDefault屬性.
    bool autoDefault() const
    void setAutoDefault(bool)
    bool isDefault() const
    void setDefault(bool)

  • 1.2
    該屬性控制按鈕是否不需要預設顯示邊框.預設是false的,表示一直顯示邊框…如果它被設定為true.則該按鈕是不會顯示四周的邊框的,除非你按下它才顯示.表象和QLabel類似,當你按下時才會顯示邊框~
    bool isFlat() const
    void setFlat(bool)

  • 1.3:
    作為選單按鈕來使用,當點選的時候顯示選單.一般來說,會在按鈕名或者圖示旁邊出現一個小三角來表示這是一個選單按鈕.並且選單的所有權沒有轉移到按鈕上.
    QMenu * menu() const
    void QPushButton::setMenu(QMenu * menu)

    QPushButton *button = new QPushButton(this);
    button->move(100,100);
    button->setText("Language");
    button->adjustSize();
    //建立選單.
    QMenu *menu = new QMenu();
    QAction *action1 = new QAction("C++",this);
    QAction *action2 = new QAction("Java", this);
    QAction *action3 = new QAction("Python", this);
    menu->addAction(action1);
    menu->addAction(action2);
    menu->addAction(action3);
    設定按鈕為選單按鈕.
    button->setMenu(menu);

這裡寫圖片描述
其他函式見QAbstractButton基類.

2.訊號與槽

signals:

//按鈕被點擊發出訊號.
void clicked(bool checked = false)
2.
//按鈕被按下發出訊號.
void pressed()
3.
//按鈕被釋放出訊號.
void released()
4.
//按鈕被按下或者釋放都發出訊號.
void toggled(bool checked)

slots:


  1. //顯示選單.如果沒有設定選單,就不顯示唄.
    void showMenu()

  2. //執行按下按鈕指定時間的操作.前提是設定了setAutoRepeat(true);
    void animateClick(int msec = 100)

  3. //執行點選按鈕的操作.
    void click()

  4. //設定是否被選中.
    void setChecked(bool)

  5. //修改圖示的尺寸.
    void setIconSize(const QSize & size)

  6. //執行切換操作.
    void toggle()