#include "widget.h"
#include "ui_widget.h"
#include "mydialog.h" // 引入自定义对话框类头文件
#include <QFileDialog> // 引入文件对话框模块
#include <QDebug> // 引入调试输出模块
#include <QFileInfo> // 引入文件信息模块
#include <QMessageBox> // 引入消息对话框模块
#include <QPixmap> // 引入像素图模块
#include <QInputDialog> // 引入输入对话框模块
#include <QColorDialog> // 引入颜色对话框模块
#include <QFontDialog> // 引入字体对话框模块
// Widget类的构造函数,父窗口为QWidget指针
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
// 初始化UI界面
ui->setupUi(this);
// 设置窗口大小为固定尺寸600x600
setFixedSize(600, 600);
// 加载背景图片,并进行缩放以适应窗口大小,保持原图宽高比,使用平滑变换
QPixmap pixmap(":/White deer.jpg");
pixmap = pixmap.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
// 创建一个调色板并设置窗口背景为加载的图片
QPalette palette;
palette.setBrush(QPalette::Window, QBrush(pixmap));
setPalette(palette);
// setAutoFillBackground(true); // 若需要填充背景,则取消注释此行
}
// Widget类的析构函数,释放内存资源
Widget::~Widget()
{
delete ui;
}
// 处理点击"打开文件对话框"按钮事件
void Widget::on_FileDialog_clicked()
{
// 获取多个文件名列表
QStringList filenamelist = QFileDialog::getOpenFileNames(
this, "open File", QDir::currentPath(), "C++ Recourse File(*.cpp)");
// 如果没有选择任何文件则返回
if (filenamelist.isEmpty())
return;
// 打印所选的所有文件名
for (const QString &file : filenamelist) {
qDebug() << file;
}
// 获取并打印第一个选定文件的基本文件名(不含路径和扩展名)
QFileInfo fileInfo(filenamelist.at(0));
qDebug() << fileInfo.baseName();
}
// 处理点击"信息提示框"按钮事件
void Widget::on_MessageBox_clicked()
{
// 显示一条信息提示对话框
QMessageBox::information(this,
"Information",
"Welcome to my world");
}
// 处理点击"输入对话框"按钮事件
void Widget::on_InputDialog_clicked()
{
// 使用输入对话框获取整数型密码
int num = QInputDialog::getInt(this,
"Input",
"Please enter your password");
// 输出输入的密码
qDebug() << num;
}
// 处理点击"颜色对话框"按钮事件
void Widget::on_ColorDialog_clicked()
{
// 使用颜色对话框获取用户选择的颜色,初始颜色为红色
QColor color = QColorDialog::getColor(Qt::red, this, "Get Color");
// 输出选择的颜色
qDebug() << color;
// 设置框架控件的背景自动填充,并设置其背景色为用户选择的颜色
ui->frame->setAutoFillBackground(true);
ui->frame->setPalette(color);
}
// 处理点击"字体对话框"按钮事件
void Widget::on_FontDialog_clicked()
{
// 使用字体对话框获取用户选择的字体,初始字体为"微软雅黑"
bool ok;
QFont font = QFontDialog::getFont(&ok, QFont("微软雅黑"), this, "Get Font");
// 输出选择的字体
qDebug() << font;
}
// 处理点击"登录"按钮事件
void Widget::on_Login_clicked()
{
// 创建并显示自定义登录对话框
myDialog dialog(this);
dialog.exec();
}