// 引入自定义窗口部件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);
}
01-project
于 2024-04-17 14:48:03 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)