Qt QPushButton按钮控件

文章目录

  • [1 属性和方法](#1 属性和方法)
    • [1.1 文本](#1.1 文本)
    • [1.2 图标](#1.2 图标)
    • [1.3 样式表](#1.3 样式表)
    • [1.4 信号](#1.4 信号)
  • [2 实例](#2 实例)
    • [2.1 布局](#2.1 布局)
    • [2.2 添加图标](#2.2 添加图标)
    • [2.3 添加样式表](#2.3 添加样式表)
    • [2.4 代码实现](#2.4 代码实现)

1 属性和方法

按钮除了可以设置显示文本之外,还可以设置图标

1.1 文本

可以获取和设置按钮上显示的文本

c++ 复制代码
// 获取和设置按钮的文本
QString text() const
void setText(const QString &text);

该属性 既可以在Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改

1.2 图标

可以获取和设置按钮上显示的图标

C++ 复制代码
// 获取和设置按钮的图标
QIcon icon() const;
void setIcon(const QIcon &icon);

该属性,既可以在Qt设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改

1.3 样式表

样式表可以设置包括文本颜色、背景色、边框、字体等很多样式

c++ 复制代码
// 获取和设置样式表
// 这是继承自QWidget类的属性和方法
// 只要继承自QWidget类的控件,都有该属性
QString styleSheet() const;
void setStyleSheet(const QString &styleSheet);

样式表既可以在Qt设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改

1.4 信号

按钮在按下和抬起的过程中,会发射多个信号。

c++ 复制代码
// 当按钮被点击(按下并抬起)时,发送该信号,其中带有一个默认参数
// 对于QPushButton 通常不需要传递这个默认参数
// 对于可选中/ 取消选中的按钮,比如复选框QCheckBox,单选框QRadioButton 可以通过该参数,获取其是否选中
void clicked(bool checked = false);

// 当按钮被按下时,发送该信号
void pressed();

// 当按钮被抬起时,发送该信号
void released();

2 实例

该实例演示,如何设置按钮的文本和图标,以及信号的使用,如下:

2.1 布局

在UI设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局

2.2 添加图标

首先添加资源文件,尹添加两个图标文件

2.3 添加样式表

在右侧的属性窗口中,或者在按钮上右键->【改变样式表...】,都可以打开编辑样式表的对话框如下,设置了按钮的字体颜色和背景渐变:

2.4 代码实现

c++ 复制代码
void Widget::on_btnStart_clicked() {
    QString s = ui->btnStart->text();
    qDebug() << s;
    if (s == "启动") {
        // 则修改为停止
        ui->btnStart->setText("停止");
        ui->btnStart->setFont(QFont("Microsoft YaHei UI", 9));
        ui->btnStart->setIcon(QIcon(":/res/stop.ico"));
        ui->btnStart->setIconSize(QSize(24, 24));
    } else {
        // 则修改为启动
        ui->btnStart->setText("启动");
        ui->btnStart->setFont(QFont("Microsoft YaHei UI", 9));
        ui->btnStart->setIcon(QIcon(":/res/start.ico"));
        ui->btnStart->setIconSize(QSize(24, 24));
    }
}

void Widget::on_btnConnect_clicked() {
    QString s = ui->btnConnect->text();
    qDebug() << s;
    if (s == "连接") {
        ui->btnConnect->setText("断开连接");
        ui->btnSend->setEnabled(true);
    } else {
        ui->btnConnect->setText("连接");
        ui->btnSend->setEnabled(false);
    }
}

void Widget::on_btnSignal_clicked() {
    qDebug() << "clicked...";
}

void Widget::on_btnSignal_pressed() {
    qDebug() << "pressed...";
}

void Widget::on_btnSignal_released() {
    qDebug() << "released...";
}
相关推荐
stolentime3 分钟前
CF2277E Tree Guessing题解
c++·算法·贪心算法·交互·ad-hoc
quantdash_cc25 分钟前
如何检查滚动收益率计算中的窗口长度不足?——从数学定义到 Pandas 实现
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
衍生星球42 分钟前
【Java 语言】— 方法(方法定义、调用、参数、返回值、方法重载)
java·开发语言·方法
CodeGL1 小时前
16、Python Web开发
开发语言·前端·python
喵了几个咪1 小时前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
FRing031 小时前
JavaScript入门到精通二十九(内置构造函数(Object、Array))
开发语言·前端·javascript
syagain_zsx1 小时前
ODB 与 MySQL:C++ 里的 ORM 实践(类即表、事务铁律与查询封装)
开发语言·数据库·c++·mysql·工具库·1024程序员节
小鱼仙官1 小时前
使用Qt封装C/C++ 动态库 用于第三方调用
c语言·c++·qt
小嘉丶学长1 小时前
Day08 · 字符串(二)
服务器·开发语言·python·学习·1024程序员节
萌动的小火苗1 小时前
MQTT的QoS0、QoS1、QoS2有什么区别?
开发语言·网络·python·php·信息与通信