第四章 Qt 常用按钮组件

目录

一、常用的四种按钮

二、按钮接口详情

[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。

可观看下面链接加深理解。

4.5常用的按钮组件_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1km4y1k7CW?p=29&vd_source=9f6a57780f9760d9cdd025dbc388f3ba

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);
}
相关推荐
小冷coding几秒前
【Java】Dubbo 与 OpenFeign 的核心区别
java·开发语言·dubbo
Coder_Boy_5 分钟前
基于SpringAI的在线考试系统-智能考试系统-学习分析模块
java·开发语言·数据库·spring boot·ddd·tdd
2401_8948281218 分钟前
从原理到实战:随机森林算法全解析(附 Python 完整代码)
开发语言·python·算法·随机森林
玄同76518 分钟前
Python「焚诀」:吞噬所有语法糖的终极修炼手册
开发语言·数据库·人工智能·python·postgresql·自然语言处理·nlp
羽翼.玫瑰20 分钟前
关于重装Python失败(本质是未彻底卸载Python)的问题解决方案综述
开发语言·python
CRMEB系统商城1 小时前
CRMEB多商户系统(PHP)- 移动端二开之基本容器组件使用
运维·开发语言·小程序·php
淮北4941 小时前
科研绘图工具R语言
开发语言·r语言
逍遥德1 小时前
java Map Set List 扩容机制
java·开发语言·list
2501_944521591 小时前
Flutter for OpenHarmony 微动漫App实战:图片加载实现
android·开发语言·前端·javascript·flutter·php
nbsaas-boot1 小时前
基于 Java 21 ScopedValue 的多租户动态数据源完整实践
java·开发语言