效果图:
/************************imageprocessqt5.h****************************/
#ifndef IMAGEPROCESSQT5_H
#define IMAGEPROCESSQT5_H
//这个文件就是用来定义与界面相关的类的
#include <QtWidgets/QMainWindow>
#include<QtWidgets>
#include "ui_imageprocessqt5.h"
#pragma execution_character_set("utf-8")//防止乱码问题
class ImageProcessQt5 : public QMainWindow
{
Q_OBJECT //Qt元对象系统的一些特征(它必须放在类定义的私有区)
public:
ImageProcessQt5(QWidget *parent = 0);
~ImageProcessQt5();
private:
/**
这个是由.ui文件生成的类的构造函数,作用是对界面进行初始化
它按照Qt设计器里设计的样子把窗体画出来,把Qt设计器里面定义的信号和槽建立起来。
也可以说,setupUi是界面和写程序之间的桥梁。
*/
Ui::ImageProcessQt5Class ui;
QPushButton * button; //创建一个按钮
QWidget * widget; //子窗口
public slots:
void newWidge(); //槽函数
};
#endif // IMAGEPROCESSQT5_H
/************************imageprocessqt5.cpp****************************/
include "imageprocessqt5.h"
#include <QDesktopWidget> //提供对多头信息的屏幕的访问
#include<QDebug>
void ImageProcessQt5::newWidge()
{
if (button->text() == "打开")
{
widget = new QWidget;
widget->show();
button->setText("关闭");
}
else if(button->text() == "关闭")
{
widget->close();
button->setText("打开");
}
}
ImageProcessQt5::ImageProcessQt5(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
button = new QPushButton("打开",this);
//QWidget * widget = new QWidget;
//widget->show();
//widget->close();
connect(button, &QPushButton::clicked, this, &ImageProcessQt5::newWidge);
}
ImageProcessQt5::~ImageProcessQt5()
{
}
/***************************main.cpp**********************************/
/**
程序中需要完成的imageProcess类
*/
#include "imageprocessqt5.h"
/**
1)每一个使用Qt图形化应用程序都需要使用一个QApplication对象。
2)QApplication管理了各种各样的图形化应用程序的广泛资源、基本配置、控制流及事件处理等
*/
#include <QtWidgets/QApplication>
#include<opencv.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //
ImageProcessQt5 w; //创建一个ImageProcessQt5对象,在整个类中完成各种功能
w.show(); //当创建一个窗口部件的时候,默认是不可见的,必须调用show()函数使它变为可见
return a.exec(); //进入消息循环,等待可能的输入进行响应
}