Qt实践3: 图片浏览器

Qt实现图片浏览器

Qt实践3: 图片浏览器

引言

因课程教学,需要利用Qt做图形界面设计(GUI)。自学Qt两月有余,发现现有很多资料,讲述C++程序设计QT项目的较多,不利于新手入门,特别是对于C++编程较弱的学生,上手较难。因此,我将所学的资料,进行归纳整理,总结出一种利用Qt Creator平台的UI设计模式进行Qt项目设计的方法,其中信号与槽函数的编写,也利用槽函数自动连接的方法,大大减少C++代码的编写。该GUI设计方法简捷,易于新手学习。
第一个实践项目是密码登录窗设计,主要讲述 QtCreator的基本操作、对话框Dialog窗体的创建,以及两个窗口的切换显示方法。
第二个实践项目是简易计算器的设计,着重讲述Widget窗体的界面设计与布局方法、槽函数编写方法。
本项目设计着重讲述带有菜单栏、工具栏和铆接组件的MainWindow窗体设计、信号与槽函数自动配置,以及槽函数编程方法。
本实践项目是图片浏览器设计,借鉴于[寒江雪Charles的图片浏览器],该文章提供的源代码,着重利用C++代码方式编写程序。这里对其进行简化,充分利用QtCreator的UI设计模式,减少编写的代码,便于新手学习。

一、 实验目的

  1. 熟悉 QtCreator的基本操作,熟练掌握信号与槽在应用程序中的使用。
  2. 熟练Qmainwindow窗口设计方法
  3. 掌握图片浏览器的Qt设计方法

二、 实验内容

  1. 学习 Qt 资源系统使用方法。
  2. 使用 QtCreator,设计图片浏览器。
    在这里插入图片描述

三、实现步骤

1. 创建工程
打开 QtCreator,新建项目,进行以下操作:
 选择“Qt Widgets Application”
 项目名称“ImageViewer”,路径“…/QImageViewer”
 选择类“QmainWindow”,名称“ImageViewer”
 并选中“创建界面”
在这里插入图片描述
2. 添加资源文件
 将图片文件夹“/images”复制到项目路径“…/QImageViewer”中。(该图片文件夹来自于[[寒江雪Charles的图片浏览器]],放置了菜单操作图标)
 右击项目名称,选择“Add New”,打开新建文件界面。
 选择模板Qt->Qt Resource File,名称为“Images”,路径选择上步复制的图片文件夹“/images”,默认选择添加到当前项目中。 窗口正下方,点击“添加”,点击“添加前缀”,修改前缀为“/images”.
 再点击“添加”,选择“添加文件”,全部选中当前图片(ctrl+A),完成资源文件的创建。
在这里插入图片描述
3.菜单栏设计
菜单栏的构成:标题栏、菜单栏、工具栏、锚接部件、中心部件
在这里插入图片描述
双击项目树中的imageviewer.ui文件名,进入设计模式。
1)创建菜单栏和选项
窗口界面上,双击“在这里输入”,可输入菜单栏的名称,回车后进入当前菜单选项设计界面,再双击“在这里输入”,可创建当前菜单下各选项。
这里,创建菜单栏和菜单下选项分别为:
创建菜单栏File,选项有:打开,关闭,退出。(中文不能直接输入,可用复制、黏贴方式输入)。
创建菜单栏operate,选项有:上一张,下一张,左旋,右旋,放大,缩小。
创建菜单栏About,选项有:Qt
在这里插入图片描述
2)添加菜单选项的图标
双击下方动作编辑器窗口的“actionopen”,弹出编辑动作窗口,点击图标选项“…”,弹出图片选择窗口,选择合适的图片。(如,add.png)
在这里插入图片描述
类似操作,分别给选项:打开,关闭,退出;上一张,下一张,左旋,右旋,放大,缩小;About Qt,都选择合适的图标的图片。

3)添加快捷键
如上,打开编辑动作的窗口,在Shortcut空白处按住键盘组合键,即可输入对应的快捷键。比如,这里按住Ctrl和O键,则设置打开选项的快捷键是Ctrl+O
在这里插入图片描述
分别给全部菜单选项添加对应的快捷键。(也可以不添加)
下方的动作编辑器窗口中,修改各菜单选项的名称。最后,如下图所示。
在这里插入图片描述
4.工具栏设计
下方的动作编辑器窗口中,选中某图标,直接拖到上方窗口工具栏的空白处即可。
在这里插入图片描述
5.功能实现
 信号与槽函数自动创建
下方的动作编辑器窗口中,右击某actionOpen,选择“转到槽”,默认选择“triggered()”信号,自动创建槽函数:void ImageViewer::on_actionOpen_triggered()。该槽函数是空函数,需要编写程序实现动作事件。
在这里插入图片描述
在这里插入图片描述
相同操作,依次创建其他action的空白槽函数。

 编写各槽函数的功能程序
多个action的槽函数,都要先进行打开图片、读取图片信息的操作,因此这里先进行2个函数的定义
int loadImageResource(void)函数用于打开本地某文件夹中的一个图片;
int getFileInfoList(void)函数用于读取图片信息。
1) 打开本地某文件夹中的一个图片。
调用QFileDialog::getOpenFileName函数,提供了打开文件窗口。程序如下:

int ImageViewer::loadImageResource(void)
{
   
    //调用标准对话框QFileDialog类,打开一个图片
    filename = QFileDialog::getOpenFileName(this, tr("Select image:"),
        "D:\\Documents\\Pictures", tr("Images (*.png *.bmp *.jpg *.gif)"));
    if (filename.isEmpty()) {
   
        return -1 ;
    }
   //QImage类封装了对于一般图像像素级的操作,图像显示则使用QPixmap。
    if (!image.load(filename)) {
   
        QMessageBox::information(this, tr("Error"), tr
  • 12
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: Qt3DRender::QMesh是Qt3D中的一个类,主要用于描述3D模型的数据结构。这个类可以从文件中读取3D模型的数据,并将其渲染到3D场景中。 在Qt3D中,QMesh是作为Mesh组件的一个子类来实现的。Mesh组件是用于表示3D模型的基本构建块。它包含了用于绘制网格的几何数据,以及定义材料和纹理贴图的属性。QMesh类提供了一些方法和属性,用于设置3D模型的基本信息,例如大小、位置、旋转等。 QMesh使用的文件格式有很多种,包括obj、stl、ply等。在Qt3D中,使用QMesh加载模型时,需要指定模型文件的格式,并将文件名传递给QMesh组件。QMesh会自动解析文件,并将数据存储到一个网格对象中。 一旦QMesh加载了3D模型的数据,它可以将这些数据传递给渲染器,以渲染模型。Qt3DRender中包含了许多渲染器,例如Phong材料渲染器、阴影渲染器、透明度渲染器等。通过使用这些渲染器,可以让3D场景呈现出更加逼真的效果。 总的来说,QMesh是Qt3D中一个重要的类,它提供了装载3D模型的功能,并且可以和其他组件一起使用,实现强大的3D场景渲染效果。 ### 回答2: qt3drender::qmesh是Qt3D渲染引擎中的一个类,用于在三维场景中渲染网格模型。它可以根据网格模型的顶点、索引、法线、纹理坐标等信息生成一个三维场景中的可视化模型。 这个类基于Qt3D核心模块提供的图形渲染管线,可以实现对网格模型的灯光照射、材质属性、阴影等特效处理。除此之外,qt3drender::qmesh还提供了一些方便的方法,如设置网格模型的转换矩阵、对网格模型进行局部坐标系的变换等。 在使用qt3drender::qmesh时,我们需要先使用Qt3D框架中提供的loaders或者自定义加载器对网格模型进行加载,然后将加载后的数据传递给qt3drender::qmesh,以实现模型的渲染。这个类不仅支持常见的网格模型格式,如.obj、.fbx、.stl等,还支持Qt3D中自定义的二进制格式,如Qt3DCore::QGeometry等。 总之,qt3drender::qmesh是Qt3D渲染引擎中非常重要的一个类,可以帮助开发者轻松实现复杂的三维场景渲染效果,并且可以与Qt中的其他模块无缝集成,为开发高效、灵活的三维应用程序提供了有力的支持。 ### 回答3: qt3drender::qmesh是Qt 3D框架中的一个类,用于描述3D网格。它可以被用作渲染对象,也可以被用于给场景添加3D几何体。它是Qt 3D中最重要的类之一,因为所有可渲染的3D对象都是由它生成的。 qt3drender::qmesh通过描述网格的顶点信息和拓扑结构来定义3D几何体。它包含了一个网格的所有顶点,以及顶点之间的连接方式,如三角形、线段等。此外,它还可以在规定的范围内调整网格的细节和形状,这意味着它可以生成高度复杂的3D几何体。 使用qt3drender::qmesh可以更轻松地创建和管理3D模型,可以实现各种不同类型的3D几何体,如多边形、球体、立方体等。此外,它还支持模型的导入和导出,使得用户可以使用自己的3D软件创建和编辑模型,再将其导入到Qt 3D中进行渲染和展示。 总之,qt3drender::qmesh是Qt 3D框架中非常重要的一个类,它使得用户可以轻松地创建和管理3D模型,以及将其渲染到场景中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是春老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值