QT肝8天17--优化用户管理
1、用户列表存在的不足
当前用户列表展示时的头像是固定写死的,新加或编辑时都不能指定图片作为头像,所以本节处理下这个不足,让新增或编辑时可以指定自己想要的头像,这就需要用到QT中的图片处理。
QT中的图片处理
QT提供了QImage
、QPixmap
和QPainter
等类进行图片处理。QImage
适合像素级操作,QPixmap
适合界面显示,QPainter
用于绘图操作,本节将要用到下面这些操作。
// 加载图片
QImage image("path/to/image.png");
QPixmap pixmap = QPixmap::fromImage(image);
图片缩放与裁剪
使用scaled()
方法进行缩放,copy()
方法进行裁剪。保持宽高比可设置Qt::KeepAspectRatio
。
// 缩放图片
QPixmap scaledPixmap = pixmap.scaled(100, 100, Qt::KeepAspectRatio);// 裁剪图片
QRect rect(10, 10, 50, 50);
QPixmap croppedPixmap = pixmap.copy(rect);
图片滤镜效果
通过操作像素或使用QGraphicsEffect
实现滤镜效果。
图片保存与格式转换
使用save()
方法保存图片,支持多种格式如PNG、JPEG。格式转换通过convertToFormat()
实现。
// 保存为JPEG
image.save("output.jpg", "JPEG", 85); // 85表示质量// 转换格式
QImage rgbImage = image.convertToFormat(QImage::Format_RGB888);
图片绘制与合成
通过QPainter
在图片上绘制文字或合成多张图片:
高级图像处理
对于复杂操作(如边缘检测),可结合OpenCV或手动实现算法:
2、目标明确,马上行动
1、新添用户
界面调整如下图
头文件定义有关参数变量
QFileDialog
QFileDialog 是 Qt 框架提供的文件对话框类,用于实现文件选择、保存和目录选择功能。支持本地文件系统操作,可自定义过滤器、默认路径和对话框模式。
基本用法
打开文件对话框
通过 getOpenFileName
静态方法选择单个文件,返回文件路径:
QString fileName = QFileDialog::getOpenFileName(this, // 父窗口tr("Open File"), // 对话框标题"/home", // 默认目录tr("Text Files (*.txt);;All Files (*)") // 文件过滤器
);
保存文件对话框
使用 getSaveFileName
保存文件:
常用选项
- 文件模式:通过
setFileMode
设置行为,如QFileDialog::ExistingFile
(仅允许选择已存在的文件)。 - 过滤器语法: RuntimeException 使用
;;
分隔不同过滤器,例如:"Text (*.txt);;Images (*.png *.jpg)"
。 - 默认扩展名:通过
setDefaultSuffix
为保存对话框添加默认扩展名。
注意事项
- 路径分隔符应使用
/
而非\
以保证跨平台兼容性。 - 静态方法会阻塞当前线程,若需非阻塞操作需使用实例化对象。
通过上述方法可灵活实现文件系统交互需求。
2、运行测试
QCoreApplication::applicationDirPath() 的用途
QCoreApplication::applicationDirPath()
是 Qt 框架中的一个静态函数,用于获取当前应用程序可执行文件所在的目录路径。该函数返回一个 QString
类型,表示应用程序的安装目录或运行目录。
适用场景
- 需要加载与可执行文件位于同一目录下的资源文件(如配置文件、图片、数据库等)。
- 构建相对路径,避免硬编码绝对路径。
- 在跨平台开发中,确保路径兼容性(Windows、Linux、macOS 等)。
#include <QCoreApplication>
#include <QDebug>int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);QString appDir = QCoreApplication::applicationDirPath();qDebug() << "Application directory:" << appDir;return app.exec();
}
3、编辑用户
修改界面窗体
处理选择图像的槽函数
4、运行测试
5、小结
QPixmap 是 Qt 框架中用于处理图像的类,主要用于在屏幕上显示优化后的图像。它支持多种图像格式(如 PNG、JPEG、BMP 等),并针对显示性能进行了优化,适合直接渲染到界面控件(如 QLabel、QPushButton)或绘图设备(如 QPainter)。
与 QImage 的区别
- 用途差异
- QPixmap:专为显示优化,适合直接渲染到界面。
- QImage:提供像素级访问,适合图像处理(如修改像素值)。
常见问题
- 跨平台问题
不同平台可能对图像格式支持有差异,建议优先使用 PNG/PNG 格式保证兼容性。 - 内存泄漏
避免频繁创建/销毁 QPixmap,可复用对象或使用智能指针管理生命周期
原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,请动动你的金手指,祝您早日实现财务自由。