文章目录

在这篇博客中,我们将带领 Qt 的初学者一步步实现一个简单的图片选择与显示功能,并逐渐优化代码,从最基础的版本开始,逐步添加更多的功能。本文中使用了 Qt 中多个重要的类和函数,例如 QFileDialog
、QSettings
、QPixmap
等。文章为每个版本的实现进行详细讲解,帮助更好地理解 Qt 的使用。
基础版本:open1()
open1()
是一个最基础的实现,用于选择图片文件并在界面上显示图片。下面是该版本的实现:
void Widget::open1()
{
// 打开文件对话框,供用户选择图片文件
// getOpenFileName() 函数的四个参数依次是:
// 1. 父组件,通常传递当前对象 this
// 2. 对话框标题
// 3. 初始打开的文件路径(此处是 D 盘根目录)
// 4. 过滤器,限制显示的文件类型(这里是 PNG 和 JPG 格式的图片)
QString filename = QFileDialog::getOpenFileName(this, "请选择图片", "D:/", "图片(*.png *.jpg)");
// 如果用户没有选择任何文件,直接返回
if(filename.isEmpty())
{
return;
}
// 将选择的文件路径显示在界面上的 QLineEdit 中
ui->lineEdit_path->setText(filename);
// 将选择的图片加载成 QPixmap 对象,并显示在 QLabel 中
ui->label_image->setPixmap(QPixmap(filename));
}
功能解析:
QFileDialog::getOpenFileName
用于显示文件选择对话框,返回所选文件的路径。如果用户取消选择,则返回空字符串。 。它返回用户选择的文件的完整路径。参数包括:this
: 父窗口指针。"请选择图片"
: 对话框的标题。"D:/"
: 初始路径,这里设置为D:
盘。"图片(*.png *.jpg)"
: 过滤器,限制用户只能选择.png
或.jpg
格式的图片。
QLineEdit::setText()
这个函数用于在界面上的文本框(这里是lineEdit_path
)中显示选中文件的路径。QLabel::setPixmap()
用于在标签中显示图片,将QPixmap
对象加载的图片展示到界面上,QPixmap
对象用于加载图片。通过setPixmap
,我们可以将图片显示在label_image
组件中。
特点与限制:
这个版本的代码实现了基础的图片选择与显示功能,但有一个明显的缺点:每次打开文件选择对话框时,路径都会重置为 D:/
,不能记住上次用户选择的文件夹位置。
增加路径记忆功能:open2()
在 open2()
中,我们对 open1()
进行了增强,添加了保存和记忆上次打开路径的功能。为此, 通过 QSettings
类保存和读取上次使用的路径。
void Widget::open2()
{
// 获取应用程序的配置文件路径,存放在当前应用的目录下
QString config_path = qApp->applicationDirPath() + "/config/Setting.ini";
qDebug() << config_path; // 输出配置文件路径,便于调试查看
// 使用 QSettings 读取 ini 文件中的配置信息,文件不存在时会自动创建
QSettings* pIniSet = new QSettings(config_path, QSettings::IniFormat);
// 从配置文件中读取上次使用的路径,如果没有记录则返回空字符串
QString lastPath = pIniSet->value<