一、基本思路
1、使用lable标签来进行图片显示区域的选取
2、使用PushButton来实现上一张图片和下一张图片的查看,以及打开图片的按钮
二、相关操作原理
1、设置整体窗口大小
this->setFixedSize( )
2、设置标签
头文件:
#include <QLabel>
相关函数:
(1)定义标签——Qlabel( )
(2)设置标签图片填充——setPixmap( )
(3)设置标签大小——setFixedSize( )
(4)设置居中对齐——setAlignment( )
(5)设置自适应——setScaledContents( )
3、设置功能按钮
头文件:
#include <QPushButton>
相关函数:
(1)创建按钮——QPushButton( )
(2)设置按钮图标——setIcon( )
(3)设置按钮位置以及大小——setGeometry( )
(4)设置按钮透明——setFlat( )
(5)设置按钮图标大小——setIconSize( )
(6)设置按钮失效或者正常——setEnabled( )
4、槽函数
信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。
信号(Signal)就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged() 信号。在设计槽函数时我们通常使用connect( )进行信号与槽的链接,槽函数在类的内部,可以直接进行访问。
三、实例代码
#include "widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) { this->setFixedSize(800, 800); lable = new QLabel("图片查看器", this); lable->setFixedSize(800, 600); lable->setAlignment(Qt::AlignCenter);//设置居中对齐 lable->setScaledContents(true);//设置自适应 next = new QPushButton(this); next->setIcon(QIcon(":/Mypic/next.jpg")); next->setGeometry(550, 650, 200, 100); next->setFlat(true); next->setIconSize(next->size()); prev = new QPushButton(this); prev->setIcon(QIcon(":/Mypic/prev.jpg")); prev->setGeometry(50, 650, 200, 100); prev->setFlat(true); prev->setIconSize(prev->size()); open = new QPushButton(this); open->setIcon(QIcon(":/Mypic/open.jpg")); open->setGeometry(300, 650, 200, 100); open->setFlat(true); open->setIconSize(open->size()); next->setEnabled(false); prev->setEnabled(false); connect(next, SIGNAL(clicked(bool)), this, SLOT(show_next())); connect(prev, SIGNAL(clicked(bool)), this, SLOT(show_prev())); connect(open, SIGNAL(clicked(bool)), this, SLOT(open_files())); } Widget::~Widget() { } void Widget::show_next() { if(i == files.length()-1) { next->setEnabled(false); qDebug() << i; return; } qDebug() << i; prev->setEnabled(true); i++; lable->setPixmap(QPixmap(files[i])); } void Widget::show_prev() { if(i == 0) { prev->setEnabled(false); qDebug() << i; return; } qDebug() << i; next->setEnabled(true); i--; lable->setPixmap(QPixmap(files[i])); } void Widget::open_files() { files = QFileDialog::getOpenFileNames(this, "所有图片", "./Mypic", "Image Files (*.png *.jpg *.bmp)"); if(files.isEmpty()) { return; } lable->setPixmap(QPixmap(files[i]));//显示第一张图片 prev->setEnabled(true); next->setEnabled(true); }
四、效果展示
好的,以上就是本期内容了,欢迎大家参考指正!!!