目錄
一、QPushButton
1.認識QPushButton
2.設置按鈕圖標
3.設置按鈕的快捷鍵
二、QRadioButton
常用的信號
按鈕的分組
三、QCheckBox
一、QPushButton
1.認識QPushButton
QPushButton繼承自QWidget,所以在上一篇文章中介紹的QWidget的屬性,理論上都是可以使用的。
嚴格來說,QPushButton并不是直接繼承QWidget,而是QAbstractButton,這個類是一個抽象類,即接口類,包含了純虛函數。
在QAbstractButton中,和QPushtButton關聯較大的屬性如下。
2.設置按鈕圖標
QIcon icon(":/LInux.jpg");ui->pushButton->setIcon(icon);//QSize q(100,100);ui->pushButton->setIconSize(q);
3.設置按鈕的快捷鍵
//設置快捷鍵//方法一:直接寫出按鍵的名稱,容易出錯ui->pushButton->setShortcut(QKeySequence("w"));//方法二:使用Qt內置的快捷鍵枚舉ui->pushButton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
此外,我們知道在FPS游戲中,可以長按鼠標左鍵連發,相應的,對于一個按鈕,是否可以長按鼠標左鍵來連擊,并且默認情況下,按住鍵盤不松手,默認就是連續點擊,那么可以設置鼠標的長按觸發連擊嗎
//設置鼠標連擊
ui->pushButton->setAutoRepeat(true);
二、QRadioButton
單選按鈕,用來在多個選項中選擇一個。
在QAbstractButton中,和QRadioButton關聯較大的屬性如下。
//讓一個選項被選中
ui->radioButton->setChecked(true);
//
ui->radioButton->setCheckable(false);
//設置按鈕不能被選中,但是按鈕還是會響應執行槽函數。
故可以設置為
ui->radioButton->setEnabled(false);
常用的信號
void Widget::on_radioButton_clicked(bool checked)
{//checked表示按鈕被選中,被選中時點擊按鈕,觸發該信號qDebug() << "checked"<<checked;
}void Widget::on_radioButton_2_pressed()
{//pressed表示按下了按鈕,但沒有松開qDebug() << "pressed";
}void Widget::on_radioButton_3_released()
{//released表示松開按住的按鈕qDebug() << "released";
}void Widget::on_radioButton_4_toggled(bool checked)
{//toggled表示切換狀態時的信號qDebug() << "toggled" << checked;
}
按鈕的分組
部分場景下,要對按鈕分組,否則所有按鈕之間都存在排他關系。而實際需求是讓組和組之間不存在排他關系。
三、QCheckBox
QCheckBox表示復選按鈕,可以允許選中多個。
和QCheckBox相關的屬性也是checkable和checked,?都是繼承自QAbstractButton,至于QCheckBox獨有的屬性tristate用來實現“三態復選框”,比較冷門,不作介紹。
代碼舉例
void Widget::on_pushButton_clicked()
{QString res = "今天的任務是:";if(ui->checkBox->isChecked()){res += ui->checkBox->text() + "、";}if(ui->checkBox_2->isChecked()){res += ui->checkBox_2->text() + "、";}if(ui->checkBox_3->isChecked()){res += ui->checkBox_3->text();}ui->label->setText(res);
}