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...";
}
相关推荐
cike_y几秒前
Mybatis之解析配置优化
java·开发语言·tomcat·mybatis·安全开发
Jay_Franklin1 小时前
SRIM通过python计算dap
开发语言·python
Slow菜鸟1 小时前
Java基础架构设计(三)| 通用响应与异常处理(分布式应用通用方案)
java·开发语言
消失的旧时光-19432 小时前
401 自动刷新 Token 的完整架构设计(Dio 实战版)
开发语言·前端·javascript
wadesir2 小时前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
tap.AI2 小时前
RAG系列(二)数据准备与向量索引
开发语言·人工智能
阿蒙Amon2 小时前
C#每日面试题-重写和重载的区别
开发语言·c#
是一个Bug2 小时前
Java基础20道经典面试题(二)
java·开发语言
Z_Easen2 小时前
Spring 之元编程
java·开发语言
liliangcsdn2 小时前
python下载并转存http文件链接的示例
开发语言·python