2026/1/8 0:24:30
网站建设
项目流程
温岭建设公司网站,zencart网站模板下载,公司企业邮箱怎么登录,网站图片要多少像素void Qt_operateping::onOpenFileClicked()
{// 打开文件对话框#xff0c;供用户选择图片文件// getOpenFileName() 函数的四个参数依次是#xff1a;// 1. 父组件#xff0c;通常传递当前对象 this// 2. 对话框标题// 3. 初始打开的文件路径#xff08;此处是 D 盘根目录…void Qt_operateping::onOpenFileClicked() { // 打开文件对话框供用户选择图片文件 // getOpenFileName() 函数的四个参数依次是 // 1. 父组件通常传递当前对象 this // 2. 对话框标题 // 3. 初始打开的文件路径此处是 D 盘根目录 // 4. 过滤器限制显示的文件类型这里是 PNG 和 JPG 格式的图片 QString filename QFileDialog::getOpenFileName(this, 请选择图片, D:/, 图片(*.png *.jpg)); // 如果用户没有选择任何文件直接返回 if (filename.isEmpty()) { return; } // 将选择的文件路径显示在界面上的 QLineEdit 中 //lineEdit_path-setText(filename); ui.lineEdit-setText(filename); // 将选择的图片加载成 QPixmap 对象并显示在 QLabel 中 //label_image-setPixmap(QPixmap(filename)); ui.label_2-setPixmap(QPixmap(filename)); } void Qt_operateping::onOpenFileClicked1() { // 获取应用程序的配置文件路径存放在当前应用的目录下 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(/LastPath/path).toString(); // 如果没有上次记录的路径使用系统默认的图片目录 if (lastPath.isEmpty()) { // QStandardPaths::writableLocation 获取系统中常用路径 lastPath QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); } // 打开文件选择对话框初始路径设置为 lastPath QString filename QFileDialog::getOpenFileName(this, 请选择图片, lastPath, 图片(*.png *.jpg)); // 如果用户没有选择文件直接返回 if (filename.isEmpty()) { return; } // 将选择的文件路径显示在界面上的文本框中 ui.lineEdit-setText(filename); QPixmap* pix new QPixmap(filename); pix-scaled(ui.label_2-size(), Qt::KeepAspectRatioByExpanding); ui.label_2-setScaledContents(true); // 显示选择的图片 //ui.label_2-setPixmap(QPixmap(filename)); ui.label_2-setPixmap(*pix); // 获取文件路径的目录部分更新配置文件中的路径 int end filename.lastIndexOf(/); QString _path filename.left(end); pIniSet-setValue(/LastPath/path, _path); // 删除 QSettings 对象释放内存 delete pIniSet; pIniSet nullptr; qDebug() _path; // 输出更新后的路径便于调试查看 } void Qt_operateping::onOpenFileClicked2() { // 获取应用程序的配置文件路径存放在当前应用的目录下 QString config_path qApp-applicationDirPath() /config/Setting.ini; qDebug() config_path; // 输出配置文件路径便于调试查看 // 使用 std::unique_ptr 管理 QSettings 对象自动管理内存 std::unique_ptrQSettings pIniSet(new QSettings(config_path, QSettings::IniFormat)); // 从配置文件中读取上次使用的路径 QString lastPath pIniSet-value(/LastPath/path).toString(); // 如果没有上次记录的路径使用系统默认的图片目录 if (lastPath.isEmpty()) { lastPath QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); } // 打开文件选择对话框初始路径设置为 lastPath QString filename QFileDialog::getOpenFileName(this, 请选择图片, lastPath, 图片(*.png *.jpg)); // 如果用户没有选择文件直接返回 if (filename.isEmpty()) { return; } // 将选择的文件路径显示在界面上的文本框中 ui.lineEdit-setText(filename); // 显示选择的图片 ui.label_2-setPixmap(QPixmap(filename)); // 获取文件路径的目录部分更新配置文件中的路径 int end filename.lastIndexOf(/); QString _path filename.left(end); pIniSet-setValue(/LastPath/path, _path); qDebug() _path; // 输出更新后的路径便于调试查看 }QSettings这是 Qt 提供的一个便捷的类用于保存应用程序的配置信息支持使用 ini 文件或者注册表。这里使用 ini 文件存储用户上次选择的路径。在这个例子中配置文件是Setting.ini其中存储了用户上次打开文件的路径。pIniSet-value(/LastPath/path).toString()读取配置中的路径值。pIniSet-setValue(/LastPath/path, _path)在用户选择完图片后保存其路径。QStandardPaths::writableLocation()用于获取操作系统中特定类型的文件夹例如图片、文档等。在这里当用户第一次打开程序时程序会自动使用系统的图片目录作为初始路径。**QString::lastIndexOf()**** 和 ****QString::left()**用于字符串的操作lastIndexOf()查找路径中的最后一个/left()截取文件路径的目录部分。特点与改进在第一个的基础上添加了路径记忆功能每次打开文件选择对话框时都会显示上次用户选择的文件夹大大提高了用户体验。同时它将路径存储在 ini 文件中确保下次程序启动时可以继续记住路径。2、使用智能指针优化内存管理在2中我们手动new和delete了QSettings对象虽然这能正常工作但容易导致内存泄漏问题。为了安全管理内存2使用了 C11 引入的智能指针std::unique_ptr从而自动管理对象的生命周期。std::unique_ptr智能指针是 C11 引入的内存管理工具能够在对象不再需要时自动释放内存从而避免内存泄漏。在这里使用std::unique_ptr来管理QSettings对象的生命周期无需手动delete。