Qt自适应大小显示图片,添加菜单
2014-10-25 10:29
1346 查看
由于后面的图像处理需要UI,OpenCV自带也不怎么会,MFC实在懒得学的。听同学说Qt不错,就用Qt做UI了。
本文主要介绍三个内容:在Qt Creator中使用OpenCV2、Qt中自适应显示图片以及在Qt窗口中添加菜单
网上看了不少Qt Creator中使用OpenCV2都是自己编译OpenCV的源代码生成库文件,然后再Qt Creator中使用。我是直接使用OpenCV为VS预先编译好的库文件,配置方法也很简单,就是打开项目的pro文件,在该文件中添加如下内容:
把上面文件的路径以及版本号改成自己机器上的即可。
首先声明一个QLabel用于图片(ScrollArea在设计器上拖放到窗体上,并设置窗口的布局方式为水平布局)。
设置QLabel的pixmap,并设置QLabel的大小和图片一致,最后将该QLabel添加到ScrollArea上。
效果如下:
图片比较大,自动的添加了滚动条。
改变了窗口的大小,图片全部显示出来,滚动条消失。
首先需要想窗体中添加一个QMenuBar(Qt5好像是默认添加的),然后一个个菜单,并添加到QMenuBar上。
menuBar的addMenu的返回值是QMenu的实例,这里添加两个菜单:File和LineTransform
接下来要创建菜单选项也就是Action,并为这些Action绑定上槽函数,最后将创建好的Action添加到菜单上就完成了。
声明需要的菜单(QMenu)和菜单选项(QAction),并且声明好了每个QAction所使用的槽函数。CreateMenu和CreateAction用来创建菜单和菜单选项的。
创建打开图片的菜单选项,并绑定好了槽函数,其余的菜单选项于此类似。
创建File菜单,并将打开图片的菜单选项添加到其下。
最终效果:
本文主要介绍三个内容:在Qt Creator中使用OpenCV2、Qt中自适应显示图片以及在Qt窗口中添加菜单
1.在Qt Creator中使用OpenCV2
一直使用 Visual Studio作为开发环境,OpenCV2在Visual Studio中也已经配置好了,而且Qt也有官方开发的Visual Studio的插件,所以就想着直接在Visual Studio中用OpenCV2+Qt5的。但是Qt在Visual Studio用着实在别扭,特别是UI文件同步到VS中有一定的延迟,也就是你在UI上拖放了一个Button,但是要过一段时间VS的自动提示才会有那个Button对象名的提示,并且改动UI后要首先编译一次。所以,最后决定在Qt Creator中使用OpenCV2。网上看了不少Qt Creator中使用OpenCV2都是自己编译OpenCV的源代码生成库文件,然后再Qt Creator中使用。我是直接使用OpenCV为VS预先编译好的库文件,配置方法也很简单,就是打开项目的pro文件,在该文件中添加如下内容:
INCLUDEPATH += E:/opencv/build/include\ E:/opencv/build/include/opencv2 win32:CONFIG(debug, debug|release): { LIBS += -LE:/opencv/build/x86/vc12/lib \ -lopencv_calib3d249d \ -lopencv_contrib249d \ -lopencv_core249d \ -lopencv_features2d249d \ -lopencv_flann249d \ -lopencv_gpu249d \ -lopencv_highgui249d \ -lopencv_imgproc249d \ -lopencv_legacy249d \ -lopencv_ml249d \ -lopencv_nonfree249d \ -lopencv_objdetect249d \ -lopencv_photo249d \ -lopencv_stitching249d \ -lopencv_ts249d \ -lopencv_video249d \ -lopencv_videostab249d } else:win32:CONFIG(release, debug|release): { LIBS += -LE:/opencv/build/x86/vc12/lib \ -lopencv_core249 \ -lopencv_imgproc249 \ -lopencv_highgui249 \ -lopencv_ml249 \ -lopencv_video249 \ -lopencv_features2d249 \ -lopencv_calib3d249 \ -lopencv_objdetect249 \ -lopencv_contrib249 \ -lopencv_legacy249 \ -lopencv_flann249 }
把上面文件的路径以及版本号改成自己机器上的即可。
2.Qt窗口自适应大小显示图片
实现思路也挺简单的,使用QLabel显示图片,把这个QLabel放在一个ScrollArea上面,这样图片过大的时候会自动的添加滚动条,最后窗体使用水平布局,这样ScrollArea的大小会随着窗口的大小自动改变。下面上代码private: Ui::MainWindow *ui; QLabel *label ;
首先声明一个QLabel用于图片(ScrollArea在设计器上拖放到窗体上,并设置窗口的布局方式为水平布局)。
设置QLabel的pixmap,并设置QLabel的大小和图片一致,最后将该QLabel添加到ScrollArea上。
QString fileName = QFileDialog::getOpenFileName(this,"Choose Image","x:/image",("Image File(*.*)")) ; QImage image ; image.load(fileName) ; label = new QLabel(); label->setPixmap(QPixmap::fromImage(image)); label->resize(QSize(image.width(),image.height())); ui->scrollImag->setWidget(label);
效果如下:
图片比较大,自动的添加了滚动条。
改变了窗口的大小,图片全部显示出来,滚动条消失。
3.添加菜单
Qt中窗体上的菜单栏对象是QMenuBar,菜单栏上可以有多个菜单(QMenu),每个菜单可以下拉多个选项(QAction)。首先需要想窗体中添加一个QMenuBar(Qt5好像是默认添加的),然后一个个菜单,并添加到QMenuBar上。
fileMenu = ui->menuBar->addMenu(tr("File")); grayLevelTransMenu = ui->menuBar->addMenu(tr("LineTransform")) ;
menuBar的addMenu的返回值是QMenu的实例,这里添加两个菜单:File和LineTransform
接下来要创建菜单选项也就是Action,并为这些Action绑定上槽函数,最后将创建好的Action添加到菜单上就完成了。
private: void createMenu(); void createAction(); private: Ui::MainWindow *ui; QLabel *imageLabel ; QMenu *fileMenu ; QMenu *grayLevelTransMenu ; QAction *openImageAction ; QAction *lineTransformAction ; QAction *logTransformAction ; QAction *powerTransfromAction ; QAction *expTransformAction; QAction *grayEqualizeAction; private slots: void openImageActionSlot(); void lineTransformActionSlot(); void logTransformActionSlot(); void powerTransfromActionSlot(); void expTransformActionSlot(); void grayEqualizeSlot();
声明需要的菜单(QMenu)和菜单选项(QAction),并且声明好了每个QAction所使用的槽函数。CreateMenu和CreateAction用来创建菜单和菜单选项的。
openImageAction = new QAction(tr("Open Image"),this) ; QObject::connect(openImageAction,SIGNAL(triggered()),this,SLOT(openImageActionSlot()));
创建打开图片的菜单选项,并绑定好了槽函数,其余的菜单选项于此类似。
fileMenu = ui->menuBar->addMenu(tr("File")); fileMenu->addAction(openImageAction);
创建File菜单,并将打开图片的菜单选项添加到其下。
最终效果:
相关文章推荐
- Qt自适应大小显示图片,添加菜单
- Qt自适应大小显示图片,添加菜单
- Qt自适应大小显示图片,添加菜单
- Qt自适应大小显示图片,添加菜单
- QT学习 - 图片自适应空间大小显示
- MFC 为对话框添加背景图片并以图片大小显示
- Qt图片自适应窗口控件大小
- Qt---Label显示图片,自动设置大小
- MFC Picture Control 自适应控件大小显示图片,失真和不失真
- Qt5 中给菜单添加图标不显示
- JFreeChart改变柱子的宽度,柱子上显示值,图片自适应大小
- JLabel 显示图片并自适应控件大小
- 百度编辑添加图片如何设置图片大小,到前台显示不变形
- Qt设置背景色,按钮添加图片,实现三态,label添加图片,设置字体大小,颜色等基本操作
- Qt学习笔记之图片显示(自动调整大小适应设计的范围)
- Qt图片自适应窗口控件大小
- 等比例显示图片的大小,宽高自适应
- 仿QQ好友动态添加说说、图片菜单滑动移进移出效果--在指定控件下面显示popupwindow动画不移效果
- C++ 图片自适应 picture control 控件大小 不失真显示
- JS&RE 控制图片显示大小, 弹出窗口自适应大小,自居中, 结合UBB与正则使用 By Stabx