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:
-
//顯示選單.如果沒有設定選單,就不顯示唄.
void showMenu() -
//執行按下按鈕指定時間的操作.前提是設定了setAutoRepeat(true);
void animateClick(int msec = 100) -
//執行點選按鈕的操作.
void click() -
//設定是否被選中.
void setChecked(bool) -
//修改圖示的尺寸.
void setIconSize(const QSize & size) -
//執行切換操作.
void toggle()