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...";
}
相关推荐
Morwit3 分钟前
QML组件之间的通信方案(暴露子组件)
c++·qt·职场和发展
qeen8715 分钟前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
莎士比亚的文学花园18 分钟前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
图码26 分钟前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
U盘失踪了32 分钟前
python curl转python脚本
开发语言·chrome·python
charlie11451419132 分钟前
Linux 字符设备驱动:cdev、设备号与设备模型
linux·开发语言·驱动开发·c
handler0134 分钟前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
FQNmxDG4S35 分钟前
Java泛型编程:类型擦除与泛型方法的应用场景
java·开发语言·python
zhouwy11339 分钟前
Linux进程与线程编程详解
linux·c++
我星期八休息1 小时前
IT疑难杂症诊疗室:AI时代工程师Superpowers进化论
linux·开发语言·数据结构·人工智能·python·散列表