01-project

本文详细介绍了如何在C++中使用Qt库创建一个带有开关、按钮、列表、图像等元素的自定义Widget,包括构造函数、用户界面设置、信号槽连接以及组件功能如开关灯、列表操作和字体更改的实现。
摘要由CSDN通过智能技术生成
// 引入自定义窗口部件Widget的头文件
#include "widget.h"
#include "ui_widget.h" // 包含由Qt Designer生成的用户界面文件
#include <QPixmap>
#include <QPalette>

// 定义Widget类的构造函数,它是QWidget的一个派生类
Widget::Widget(QWidget *parent)
    : QWidget(parent), // 继承QWidget基类构造函数
    ui(new Ui::Widget) // 创建一个指向Ui::Widget对象的指针
{
    // 初始化用户界面布局
    ui->setupUi(this);

    // 初始化开关状态变量,0代表关闭状态(关灯)
    flag = 0;
    // 设置按钮的文字为"ON"
    ui->pushButton->setText("ON");

    // 设置工具按钮的图标,加载指定路径下的图片作为图标,并设定图标大小
    ui->toolButton->setIcon(QIcon(":/Whitedeer.jpg"));
    ui->toolButton->setIconSize(QSize(100,100));

    // 在列表Widget中添加两项:纯文本项"ccc"和包含图标及文本"ddd"的QListWidgetItem
    ui->listWidget->addItem("ccc");
    ui->listWidget->addItem(new QListWidgetItem(QIcon(":/Whitedeer.jpg"), "ddd"));

    // 设置frame区域自动填充背景色,并将其背景颜色设置为红色
    ui->frame->setAutoFillBackground(true);
    ui->frame->setPalette(QPalette(Qt::red));

    // 向组合框(ComboBox)中添加一个城市名"重庆"
    ui->comboBox->addItem("重庆");
    // 输出当前组合框的当前索引值和所选文本
    qDebug() << ui->comboBox->currentIndex();
    qDebug() << ui->comboBox->currentText();

    ui->label->setAutoFillBackground(true);

    // 获取当前QLabel控件的调色板对象
    QPalette palette = ui->label->palette();

    // 设置QLabel控件的文本颜色为红色
    // QPalette::WindowText枚举表示与控件文本相关的颜色项
    palette.setColor(QPalette::WindowText, Qt::red);

    // (此处未使用的代码,若要设置背景色,可以这样写)
    // 设置QLabel控件的背景颜色,例如设置为绿色
    palette.setColor(QPalette::Window, Qt::green);

    // 将修改后的调色板应用回QLabel控件
    ui->label->setPalette(palette);

    // 加载指定路径下的图片到QPixmap对象中
    QPixmap pixmap(":/Whitedeer.jpg");

    // 将加载的图片设置为QLabel控件的显示内容
    ui->label->setPixmap(pixmap);

    // 设置QLabel控件的内容(即图片)根据控件尺寸进行缩放适应
    // 设置为true后,当QLabel控件尺寸变化时,图片也会随之缩放
    ui->label->setScaledContents(true);

    // 连接按钮的clicked信号到Widget类的ToggleLight槽函数
    connect(ui->pushButton, &QPushButton::clicked, this, &Widget::ToggleLight);
}

// Widget类的析构函数,负责释放内存资源
Widget::~Widget()
{
    // 删除指向UI对象的指针
    delete ui;
}

// ToggleLight槽函数,用于切换灯的开关状态
void Widget::ToggleLight()
{
    // 检查当前flag值以判断是否开启灯光
    if (flag) { // 若当前为开灯状态
        flag = 0; // 切换到关灯状态
        ui->pushButton->setText("ON"); // 更新按钮文字为"ON"
        qDebug() << "关灯"; // 输出提示信息
    } else { // 若当前为关灯状态
        flag = 1; // 切换到开灯状态
        ui->pushButton->setText("OFF"); // 更新按钮文字为"OFF"
        qDebug() << "开灯"; // 输出提示信息
    }
}

// 处理单选按钮点击事件
void Widget::on_radioButton_clicked()
{
    // 如果单选按钮被选中,则设置groupBox的标题,其中"%1"会被替换为"A"
    if (ui->radioButton->isChecked()) {
        QString str = QStringLiteral("现在是什么季节 (%1)").arg("A");
        ui->groupBox->setTitle(str);
    }
}

// 处理单选按钮3点击事件
void Widget::on_radioButton_3_clicked()
{
    // 如果单选按钮3被选中,同样设置groupBox的标题,其中"%1"会被替换为"B"
    if (ui->radioButton_3->isChecked())
    {
        QString str = QStringLiteral("现在是什么季节 (%1)").arg("B");
        qDebug() << str; // 输出当前设置的groupBox标题字符串
        ui->groupBox->setTitle(str);
    }
}

// 处理按钮2点击事件,将当前选中的列表项从一个列表转移到另一个列表
void Widget::on_pushButton_2_clicked()
{
    // 获取并移除当前选中的列表项
    QListWidgetItem *item = ui->listWidget->takeItem(ui->listWidget->currentRow());

    // 将该列表项添加至另一个列表
    ui->listWidget_2->addItem(item);

    // 对两个列表进行排序
    ui->listWidget->sortItems();
    ui->listWidget_2->sortItems();
}

// 处理按钮3点击事件,将当前选中的列表项从另一个列表转移回来
void Widget::on_pushButton_3_clicked()
{
    // 获取并移除当前选中的列表项(这次是从第二个列表)
    QListWidgetItem *item = ui->listWidget_2->takeItem(ui->listWidget_2->currentRow());

    // 将该列表项添加至第一个列表
    ui->listWidget->addItem(item);

    // 再次对两个列表进行排序
    ui->listWidget->sortItems();
    ui->listWidget_2->sortItems();
}

// 处理单选按钮4点击事件,更新groupBox的标题
void Widget::on_radioButton_4_clicked()
{
    QString str = QStringLiteral("现在是什么季节 (%1)").arg("C");
    ui->groupBox->setTitle(str);
}

// 处理单选按钮5点击事件,更新groupBox的标题
void Widget::on_radioButton_5_clicked()
{
    QString str = QStringLiteral("现在是什么季节 (%1)").arg("D");
    ui->groupBox->setTitle(str);
}

// 处理字体组合框(fontComboBox)当前字体变化的槽函数
void Widget::on_fontComboBox_currentFontChanged(const QFont &f)
{
    // 当用户从fontComboBox中选择新的字体时,更新label控件的字体为当前选定的字体
    ui->label->setFont(f);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值