目录
[2.1 按钮的属性](#2.1 按钮的属性)
[2.2 按钮的信号](#2.2 按钮的信号)
[2.3 以LineEdit为例子设置字体,颜色,布局格式的变化](#2.3 以LineEdit为例子设置字体,颜色,布局格式的变化)
一、常用的四种按钮
普通按钮(QPushButton)
工具按钮(QToolButton)
单选按钮(QRadioButton)
复选框(QCheckBox)
共同属于QAbstractButton类
二、按钮接口详情
2.1 按钮的属性
|---------------|--------------|------------------------------------------------------------------------------------------------------|
| 属性 | 属性值类型 | 功能 |
| text | QString | 按钮显示的文字 |
| icon | QIcon | 按钮的图标 |
| shortcut | QKeySequence | 按钮的快捷键 |
| checkable | bool | 按钮是否可复选 |
| checked | bool | 按钮是否复选状态 |
| autoExclusive | bool | 在一个布局或容器组件内的同类按钮是否是互斥的。 |
| autoRepeat | bool | cliced()、pressed()、released()信号。初次重复的延迟时间由属性autoRepeatDelay决定,重复的周期由属性autoRepeatInterval决定,时间单位都是毫秒。 |
[QAbstractButton类的主要属性]
|-------------|------|----------------------------------------|
| autoDefault | bool | 按钮是否为自动默认按钮 |
| default | bool | 按钮是否为默认按钮 |
| flat | bool | flat = true 时,按钮没有边框,只有被电击或复选时才显示按钮边框。 |
[QPushButton的新增属性]
QCheckBox增加的tristate属性,表示是否有三种复选状态,即Checked、Unchecked和PartiallyChecked。可以用QAbstractButton定义的函数isChecked()和setChecked()读取和设置复选状态,也可以用QCheckBox中定义的checkState()和setCheckState()读取和设置复选状态。
2.2 按钮的信号
QAbstractButton类定义了如下信号:
void clicked(bool checked = false) //点击按钮时
void pressed() //按下Space键或鼠标左键时
void released() //释放Space键或鼠标左键时
void toggled(bool checked) //按钮的checked属性值变化时
QCheck定义的新信号
void QCheckBox::stateChanged(int state)
//当复选框的复选按钮状态变化时,组件发射此信号。如果复选框的tristate属性设置为false,也就是只有两种状态时,stateChanged()信号和toggled()信号作用一样。
2.3 以LineEdit为例子设置字体,颜色,布局格式的变化
例子来自《Qt6 C++开发指南》 samp4_05。
可观看下面链接加深理解。
cpp
void Widget::on_pushButton_clicked()
{
//居左
ui->lineEdit->setAlignment(Qt::AlignLeft);
}
void Widget::on_pushButton_2_clicked()
{
//居中
ui->lineEdit->setAlignment(Qt::AlignCenter);
}
void Widget::on_pushButton_3_clicked()
{
//居右
ui->lineEdit->setAlignment(Qt::AlignRight);
}
void Widget::on_pushButton_4_clicked(bool checked)
{
//粗体
QFont font = ui->lineEdit->font();
font.setBold(checked);
ui->lineEdit->setFont(font);
}
void Widget::on_pushButton_5_clicked(bool checked)
{
//斜体
QFont font = ui->lineEdit->font();
font.setItalic(checked);
ui->lineEdit->setFont(font);
}
void Widget::on_pushButton_6_clicked(bool checked)
{
//下划线
QFont font = ui->lineEdit->font();
font.setUnderline(checked);
ui->lineEdit->setFont(font);
}
void Widget::on_checkBox_clicked(bool checked)
{
//只读
ui->lineEdit->setReadOnly(checked);
}
void Widget::on_checkBox_2_clicked(bool checked)
{
//是否能编辑
ui->lineEdit->setEnabled(checked);
}
void Widget::on_checkBox_3_clicked(bool checked)
{
//清空内容
ui->lineEdit->setClearButtonEnabled(checked);
}
void Widget::on_radioButton_clicked()
{
//黑色
QPalette plet = ui->lineEdit->palette();
plet.setColor(QPalette::Text,Qt::black);
ui->lineEdit->setPalette(plet);
}
void Widget::on_radioButton_2_clicked()
{
//红色
QPalette plet = ui->lineEdit->palette();
plet.setColor(QPalette::Text,Qt::red);
ui->lineEdit->setPalette(plet);
}
void Widget::on_radioButton_3_clicked()
{
//蓝色
QPalette plet = ui->lineEdit->palette();
plet.setColor(QPalette::Text,Qt::blue);
ui->lineEdit->setPalette(plet);
}