一、我是如何分析的,并如何做的呢?
1、最终效果展示
2、如何分析,如何做的呢?
当点击uploadBtn按钮时候,会调用打开文件对话框窗口,对话框限制了图片的后缀,只能打开*.png或者*.jpg的图片,此处做的事情就是加载图片,缩放图片,并将图片显示到QLabel控件上:
void PictureToolWnd::slot_uploadBtnClicked()
{
QString filepath = QFileDialog::getOpenFileName(nullptr, QStringLiteral("选择图片"), ".", "*.png;*.jpg");
if (filepath.trimmed().isEmpty() == false)
{
QPixmap picture;
picture.load(filepath);
picture = picture.scaled(m_picLable->width(), m_picLable->height());
m_picLable->setPixmap(picture);
}
}
二、更为具体的一些描述
关于布局:
布局主要采用垂直布局和水平布局相互结合方式,窗体总体布局为垂直布局,垂直布局中添加了一个标签(QLabel)和一个水平布局(里边包含3个按钮)
.
关于打开文件:
采用QFileDialog函数进行打开文件,需要注意的是关于后面设置选择器的时候,即是 "*.png;*.jpg"这部分的时候,一定要用分号分割,千万不能用逗号分割
QString filepath = QFileDialog::getOpenFileName(nullptr, QStringLiteral("选择图片"), ".", "*.png;*.jpg");
关于图片缩放:
调用QPixmap的scaled就可以完成缩放功能
picture = picture.scaled(m_picLable->width(), m_picLable->height());
三、如何获取代码
1、通过csdn下载
QtPictureTool.rar-C++文档类资源-CSDN文库https://download.csdn.net/download/wjl18270365476/50348646
2、参考如下文件目录及详细代码,组织结构
1)代码结构
2)代码详情
PictureToolWnd类代码
头文件:
#pragma once
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
class PictureToolWnd : public QWidget
{
Q_OBJECT
public:
PictureToolWnd(QWidget* p = nullptr);
public slots:
void slot_uploadBtnClicked();
public:
QLabel* m_picLable;
QVBoxLayout* m_vLayout;
QHBoxLayout* m_hLayout;
QPushButton* m_determineBtn;
QPushButton* m_cancelBtn;
QPushButton* m_uploadBtn;
};
源文件:
#include "PictureToolWnd.h"
#include <QFileDialog>
PictureToolWnd::PictureToolWnd(QWidget* p /*= nullptr*/) : QWidget(p)
{
m_vLayout = new QVBoxLayout();
setLayout(m_vLayout);
m_picLable = new QLabel();
m_picLable->setFixedSize(350, 350);
m_determineBtn = new QPushButton();
m_cancelBtn = new QPushButton();
m_uploadBtn = new QPushButton();
m_determineBtn->setText("determine");
m_cancelBtn->setText("cancel");
m_uploadBtn->setText("uploadBtn");
m_hLayout = new QHBoxLayout();
m_hLayout->addWidget(m_uploadBtn);
m_hLayout->addWidget(m_determineBtn);
m_hLayout->addWidget(m_cancelBtn);
m_vLayout->addWidget(m_picLable);
m_vLayout->addLayout(m_hLayout);
connect(m_uploadBtn, SIGNAL(clicked()), this, SLOT(slot_uploadBtnClicked()));
}
void PictureToolWnd::slot_uploadBtnClicked()
{
QString filepath = QFileDialog::getOpenFileName(nullptr, QStringLiteral("选择图片"), ".", "*.png;*.jpg");
if (filepath.trimmed().isEmpty() == false)
{
QPixmap picture;
picture.load(filepath);
picture = picture.scaled(m_picLable->width(), m_picLable->height());
m_picLable->setPixmap(picture);
}
}
3)main文件,主函数文件
#include <QApplication>
#include "PictureToolWnd.h"
int main(int argc, char** argv)
{
//
QApplication app(argc, argv);
PictureToolWnd w;
w.show();
return app.exec();
}
四、帮助
如何疑问可留言或者私信我