【Qt开发】按钮类控件
目录
1,Push Button
2,Radio Buttion
3,Check Box
1,Push Button
QPushButton 表示一个按钮,该类继承自 QAbstractButton。这个类是一个抽象类,是其他按钮的父类。
QPushButton 重要的几个属性如下图。
设置相关的属性时,在属性前面添加set并把属性的首字母大写即可。
// 设置图标50*50像素大小
QIcon icon(":/doge.png");
pushButton->setIcon(icon);
pushButton->setIconSize(QSize(50, 50));
添加快捷键
Qt 中使用 setShortcut 给按钮设置快捷键。参数是⼀个 QKeySequence 对象。表示一个按键序列,支持组合键(ctrl + c 这种)。
QKeySequence 的构造函数参数,可以直接使用 "ctrl+c" 这样的按键名字符串表示,也可以使用预定义好的常量(形如 Qt::CTRL + Qt::Key_C、Qt::Key_W 等)表示。
.......
// 设置快捷键
ui->pushButton_up->setShortcut(QKeySequence("w"));
ui->pushButton_down->setShortcut(QKeySequence("s"));
ui->pushButton_left->setShortcut(QKeySequence("a"));
ui->pushButton_right->setShortcut(QKeySequence("d"));
// 设置快捷键也可以写作
// ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_W));
// ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_S));
// ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_A));
// ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_D));
按键的好处除了方便外,默认情况下还是连发的(一直按住快捷键会一直触发效果),但鼠标不行。若鼠标想要连发,需要设置 autoRepeat。
// 开启连发功能
ui->pushButton_up->setAutoRepeat(true);
ui->pushButton_down->setAutoRepeat(true);
ui->pushButton_left->setAutoRepeat(true);
ui->pushButton_right->setAutoRepeat(true);
2,Radio Buttion
QRadioButton 是单选按钮,可以让我们在多个选项中选择一个。
作为 QAbstractButton 和 QWidget 的子类,上面介绍的属性和用法,对于 QRadioButton 同样适用。
// 添加一个默认的选项
ui->radioButton->setChecked(true);
ui->label->setText("您选择的性别为: 男");
// 禁用“其它”选项(注意: Checkable只能让按钮不被选中,但点击后,仍可以响应点击事件)
// ui->radioButton_3->setCheckable(false);
// 通过下面两种中的任一方式,点击按钮后将不会做任何处理
ui->radioButton_3->setEnabled(false);
// ui->radioButton_3->setDisabled(true);
下面来认识一下几个重要的信号。这里通过槽函数来说明。
void Widget::on_radioButton_4_clicked(bool checked)
{
// clicked(bool checked)信号中的checked参数表示当前radioButton_4是否被选中
qDebug() << "clicked: " << checked;
}
void Widget::on_radioButton_3_pressed()
{
qDebug() << "pressed"; // 鼠标按下信号。点击时就会触发该信号
}
void Widget::on_radioButton_released()
{
qDebug() << "released"; // 鼠标松开信号。鼠标松开时就会触发该信号
}
void Widget::on_radioButton_2_toggled(bool checked)
{
// toggled信号会在部件的状态发生切换时发射,并传递一个布尔值checked,表示该部件的新状态(选中或未选中)
qDebug() << "toggled: " << checked;
}
由于单选按钮具有排他性,所以多个按钮之中只能选择一个。Qt中提供了 QButtonGroup 类将按钮分组,不同组的按钮互不影响。分组后,不同组的按钮可以共同选择。
// 使用 QButtonGroup 对单选按钮进行分组
QButtonGroup* group1 = new QButtonGroup(this);
QButtonGroup* group2 = new QButtonGroup(this);
// 把单选按钮放到不同组里
group1->addButton(ui->radioButton1);
group1->addButton(ui->radioButton2);
group2->addButton(ui->radioButton3);
group2->addButton(ui->radioButton4);
3,Check Box
QCheckBox 表示复选按钮,可以允许选中多个。它和 QCheckBox 最相关的属性也是 checkable 和 checked,都是继承自 QAbstractButton。用法跟上面一样,这里不再说明。
Qt中还有一个常用的按钮 Tool Button。QToolButton 的大部分功能和 QPushButton 是一致的。但是 QToolButton 主要应用在工具栏、菜单等场景。这个暂时先不做说明,后面会详细介绍这块内容。