網(wǎng)站做的支付寶接口嗎上海百度seo公司
按鈕類控件
- 按鈕類控件
- 1. PushButton
- 2. Radio Button
- 3. Check Box
- 4. Tool Button
按鈕類控件
1. PushButton
使? QPushButton 表示?個按鈕,這也是當前我們最熟悉的?個控件了.
QPushButton 繼承? QAbstractButton . 這個類是?個抽象類. 是其他按鈕的?類.
在 Qt Designer 中也能夠看到這?的繼承關系:
QAbstractButton 中, 和 QPushButton 相關性較?的屬性
代碼?例: 帶有圖標的按鈕
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);// 創(chuàng)建圖標QIcon icon(":/Linux.jpg");// 設置圖標ui->pushButton->setIcon(icon);// 設置圖標大小ui->pushButton->setIconSize(QSize(100, 100));}
代碼示例2: 帶有快捷鍵的按鈕
在界?中拖五個按鈕:五個按鈕的 objectName 分別為 pushButton_target , pushButton_up , pushButton_down , pushButton_left , pushButton_right
使? setShortcut 給按鈕設置快捷鍵. 參數(shù)是?個 QKeySequence 對象. 表示?個按鍵序列. 支持組合鍵 (ctrl + c 這種).
QKeySequence 的構造函數(shù)參數(shù), 可以直接使? “ctrl+c” 這樣的按鍵名字符串表示, 也可以使?預定義好的常量 (形如 Qt::CTRL + Qt::Key_C ) 表?.
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);// 設置圖標ui->pushButton_target->setIcon(QIcon(":/target.png"));ui->pushButton_target->setIconSize(QSize(100, 100));ui->pushButton_up->setIcon(QIcon(":/up.png"));ui->pushButton_down->setIcon(QIcon(":/down.png"));ui->pushButton_left->setIcon(QIcon(":/left.png"));ui->pushButton_right->setIcon(QIcon(":/right.png"));// 設置快捷鍵ui->pushButton_up->setShortcut(QKeySequence("w"));ui->pushButton_down->setShortcut(QKeySequence("s"));ui->pushButton_left->setShortcut(QKeySequence("a"));ui->pushButton_right->setShortcut(QKeySequence("d"));}// 按鈕的槽函數(shù)void Widget::on_pushButton_up_clicked(){const QRect& rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x(), rect.y() - 5, rect.width(), rect.height());}void Widget::on_pushButton_down_clicked(){const QRect& rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x(), rect.y() + 5, rect.width(), rect.height());}void Widget::on_pushButton_left_clicked(){const QRect& rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x() - 5, rect.y(), rect.width(), rect.height());}void Widget::on_pushButton_right_clicked(){const QRect& rect = ui->pushButton_target->geometry();ui->pushButton_target->setGeometry(rect.x() + 5, rect.y(), rect.width(), rect.height());}
代碼?例: 按鈕的重復觸發(fā);在上述案例中, 按住快捷鍵, 是可以進?重復觸發(fā)的. 但是?標點擊則不能;修改 widget.cpp, 在構造函數(shù)中開啟重復觸發(fā).
// 開始重復觸發(fā)ui->pushButton_up->setAutoRepeat("true");ui->pushButton_down->setAutoRepeat("true");ui->pushButton_left->setAutoRepeat("true");ui->pushButton_right->setAutoRepeat("true");
2. Radio Button
QRadioButton 是單選按鈕. 可以讓我們在多個選項中選擇?個.
作為 QAbstractButton 和 QWidget 的?類, 上?介紹的屬性和?法, 對于 QRadioButton 同樣適?.
QAbstractButton 中和 QRadioButton 關系較?的屬性
代碼?例: 選擇性別
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget){ui->setupUi(this);// 禁? other 選項ui->radioButton_3->setEnabled(false);}void Widget::on_radioButton_clicked(){ui->label->setText("你選擇的性別為:男");}void Widget::on_radioButton_2_clicked(){ui->label->setText("你選擇的性別為:女");}void Widget::on_radioButton_3_clicked(){ui->label->setText("你選擇的性別為:其它");}
代碼示例2:
click, press, release, toggled 的區(qū)別
- clicked 表??次 “點擊”
- pressed 表??標 “按下”
- released 表??標 “釋放”
- toggled 表?按鈕狀態(tài)切換
-
在界?上創(chuàng)建四個單選按鈕,objectName 分別為 radioButton , radioButton_2 , radioButton_3 , radioButton_4
-
給 1 創(chuàng)建 clicked 槽函數(shù), 給 2 創(chuàng)建 pressed 槽函數(shù), 給 3 創(chuàng)建 released 槽函數(shù), 給 4 創(chuàng)建 toggled 槽函數(shù).
void Widget::on_radioButton_clicked(){qDebug() << "clicked";}void Widget::on_radioButton_2_pressed(){qDebug() << "pressed";}void Widget::on_radioButton_3_released(){qDebug() << "released";}void Widget::on_radioButton_4_toggled(bool checked){if (checked){qDebug() << "toggled checked true";}else{qDebug() << "toggled checked false";}}
-
運?程序, 可以看到
- clicked 是?次?標按下+?標釋放觸發(fā)的.
- pressed 是?標按下觸發(fā)的.
- released 是?標釋放觸發(fā)的.
- toggled 是 checked 屬性改變時觸發(fā)的.
總的來說, toggled 是最適合 QRadioButton 的.
代碼示例3:
此時直接運?程序, 可以看到, 這六個 QRadioButton 之間都是排他的.
我們希望每?組內部來控制排他, 但是組和組之間不能排他.
引? QButtonGroup 進?分組,修改 widget.cpp:
- Widget::Widget(QWidget *parent)
- QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QButtonGroup* group1 = new QButtonGroup(this);
QButtonGroup* group2 = new QButtonGroup(this);
QButtonGroup* group3 = new QButtonGroup(this);group1->addButton(ui->radioButton);
group1->addButton(ui->radioButton_2);group2->addButton(ui->radioButton_3);
group2->addButton(ui->radioButton_4);group3->addButton(ui->radioButton_5);
group3->addButton(ui->radioButton_6);
}
結果如下:
3. Check Box
QCheckBox 表?復選按鈕. 可以允許選中多個。
和 QCheckBox 最相關的屬性也是 checkable 和 checked , 都是繼承? QAbstractButton .
代碼?例1: 獲取復選按鈕的取值
1)在界?上創(chuàng)建 三個復選按鈕, 和?個普通按鈕.
objectName 分別為 checkBox_eat , checkBox_sleep , checkBox_play , 以及 pushButton
void Widget::on_pushButton_clicked(){QString text = ui->label->text();// 判斷選項是否被選中if(ui->checkBox->isChecked()){text += ui->checkBox->text() + " ";}if(ui->checkBox_2->isChecked()){text += ui->checkBox_2->text() + " ";}if(ui->checkBox_3->isChecked()){text += ui->checkBox_3->text() + " ";}ui->label->setText(text);}
4. Tool Button
QToolButton 的?部分功能, 和 QPushButton 是?致的. 但是 QToolButton 主要應?在?具欄,菜單等場景. 這個我們暫時先不介紹。