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()
示例及菜單效果如下:
——————————————————————————————————————————————————————
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 | 選中 |
第三態外觀如下: