文章目录
- 1. QPushButton 普通按钮
- 2. QRadioButton 单选按钮
- 3. QCheckBox 复选按钮
1. QPushButton 普通按钮
QPushButton中的重要属性
- text:按钮中的文本
- icon:按钮的图标
- iconSize:按钮中图标的尺寸
- shortCut:按钮对应的快捷键,可以直接通过案件名字设置,也可以通过按键枚举设置
- autoRepeat:按钮是否能连续触发
- autoRepeatDelay:触发的延时时长
- autoRepeatInterval:重复触发周期
属性修改案例代码:
 QKeySequece:按下的快捷键队列,因为快捷键不只是一个
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
//    创建图标对象
//    QIcon icon(":/test.jpg");
    //设置目标  按钮图标
    ui->pushButton->setIcon(QIcon(":/test.jpg"));
    //设置图标尺寸,单位是像素
    ui->pushButton->setIconSize(QSize(50,50));
    ui->up->setIcon(QIcon(":up.png"));
    ui->up->setIconSize(QSize(60,60));
    ui->down->setIcon(QIcon(":down.png"));
    ui->down->setIconSize(QSize(60,60));
    ui->left->setIcon(QIcon(":left.png"));
    ui->left->setIconSize(QSize(60,60));
    ui->right->setIcon(QIcon(":right.png"));
    ui->right->setIconSize(QSize(60,60));
    //设置按钮快捷键
    ui->up->setShortcut(QKeySequence("w"));
    ui->left->setShortcut(QKeySequence("a"));//组合键
//    ui->down->setShortcut(QKeySequence("s"));
//    ui->right->setShortcut(QKeySequence("d"));
    ui->down->setShortcut(QKeySequence(Qt::Key_S));
    ui->right->setShortcut(QKeySequence("d"));
//    ui->right->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D));//组合快捷键
    //设置按钮连续触发(键盘快捷键默认支持连续触发,鼠标不支持)
    ui->up->setAutoRepeat(true);
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_up_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
}
void Widget::on_down_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
}
void Widget::on_left_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
}
void Widget::on_right_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
}
2. QRadioButton 单选按钮
QRadioButton常见属性:
- checkable:是否能选中
- checked:是否已经选中,checkable是checked的前提
- autoExclusive:是否排他,选中一个按钮会取消其他按钮的选中,QRadioButton默认排他。
测试代码:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //修改默认选项
    ui->secret->setChecked(true);
    ui->label->setText("默认未知");
    //错误单选框不被选中,但是可以响应事件的
    ui->wrong->setCheckable(false);
    //设置为不响应任何事件(灰色)
    ui->wrong->setDisabled(true);
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_man_clicked()
{
    //修改界面上的label标签
    ui->label->setText("选择男");
}
void Widget::on_woman_clicked()
{
    ui->label->setText("选择女");
}
void Widget::on_secret_clicked()
{
    ui->label->setText("未知");
}
QRadioButton特殊信号
- clecked(bool checked):checked为单选按钮是否选中
- pressed:单选按钮按下时响应
- release:单选按钮松开时响应
- toggled(bool checked):checked状态改变时触发此信号
测试代码:
void Widget::on_radioButton_clicked(bool checked)
{
    qDebug()<<"clicked:"<<checked;
}
void Widget::on_radioButton_pressed()
{
    qDebug()<<"pressed";
}
void Widget::on_radioButton_released()
{
    qDebug()<<"release";
}
void Widget::on_radioButton_toggled(bool checked)
{
    qDebug()<<"toggled:"<<checked;
}
首次点击bool时运行截图如下:
 
 QRadioButton设置非排他方式,使用QButtonGroup对不同的RadioButton分组,不同组之间不排他。但是组之间是排他的
#include "widget.h"
#include "ui_widget.h"
#include <QButtonGroup>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建分组
    QButtonGroup*one=new QButtonGroup(this);
    QButtonGroup*two=new QButtonGroup(this);
    QButtonGroup*three=new QButtonGroup(this);
    //将单选按钮放到不同组
    one->addButton(ui->radio1);
    one->addButton(ui->radio2);
    one->addButton(ui->radio3);
    two->addButton(ui->radio4);
    two->addButton(ui->radio5);
    two->addButton(ui->radio6);
    three->addButton(ui->radio7);
    three->addButton(ui->radio8);
}
Widget::~Widget()
{
    delete ui;
}
3. QCheckBox 复选按钮
QCheckBox的相关属性和QRadioButton相同。checked,checkable用法和上文一致不在赘述。
不同的复选按钮不冲突
使用案例:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_pushButton_clicked()
{
    QString str="兴趣爱好:";
    if(ui->checkBox->isChecked()){
        str+=ui->checkBox->text();
    }
    if(ui->checkBox_2->isChecked()){
        str+=ui->checkBox_2->text();
    }
    if(ui->checkBox_3->isChecked()){
        str+=ui->checkBox_3->text();
    }
    ui->label->setText(str);
}












![[Cesium学习]](https://img-blog.csdnimg.cn/direct/360ec5576a4f4be58854e6bd95841ef7.png)







