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...";
}
相关推荐
Sammyyyyy34 分钟前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js
汉汉汉汉汉1 小时前
C++11新特性详解:从列表初始化到线程库
c++
William一直在路上1 小时前
Python数据类型转换详解:从基础到实践
开发语言·python
看到我,请让我去学习2 小时前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
创想未来CTF2 小时前
Qt同步处理业务并禁用按钮
qt
GUET_一路向前2 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔2 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
楼田莉子2 小时前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试
三千道应用题2 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
hqxstudying2 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件