• 视觉里程计04 Qt界面显示图像示例


    基本原理

    信号槽机制是Qt的一大特色,信号类似广播,一个空间触发了一个事件如clicked(),那么这个事件会被广播到整个信号槽内,槽内函数如果建立了链接即可响应这个信号,响应这个信号的控件可以有很多个,而界面的更新方法则不需关注。

    具体操作

    按照之前的说明新建一个qt gui工程,建立好后主要用到以下几个文件:

    • QtGuiApplication1.ui,界面文件,在这里可以手动添加控件等等元素,修改后保存,回到VS编译即可在程序中更新
    • QtGuiApplication1.cpp,在这里添加信号槽等函数
    • QtGuiApplication1.h,这里加入自定义的槽函数的声明

    如何显示图像

    qlabel可以通过setPixmap来显示图像,也可以通过graphicsView通过setScene来显示图像,这里同时演示下:
    QtGuiApplication1.cpp

    #include "QtGuiApplication1.h"
    
    QtGuiApplication1::QtGuiApplication1(QWidget *parent)
    	: QMainWindow(parent)
    {
    	ui.setupUi(this);
    	//建立信号-槽链接
    	connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(func()));
    }
    //响应函数的具体操作
    void QtGuiApplication1::func()
    {
    	ui.pushButton->setText(tr("OK"));
    	ui.label->setPixmap(QPixmap("./pic.jpg"));
    	QGraphicsScene *scene = new QGraphicsScene;
    	QImage *image = new QImage();
    	image->load("./pic.jpg");
    	scene->addPixmap(QPixmap::fromImage(*image));
    	ui.graphicsView->setScene(scene);
    }
    

    QtGuiApplication1.h

    #pragma once
    
    #include <QtWidgets/QMainWindow>
    #include "ui_QtGuiApplication1.h"
    
    class QtGuiApplication1 : public QMainWindow
    {
    	Q_OBJECT
    
    public:
    	QtGuiApplication1(QWidget *parent = Q_NULLPTR);
    
    private:
    	Ui::QtGuiApplication1Class ui;
    	//这里新加入的槽响应函数
    	private slots:
    	void func();
    };
    

    界面修改如图:

  • 相关阅读:
    js 能实现监听F5页面刷新子iframe 而父页面不刷新
    Thinkpad X201 Gobi2000 上电信3G网络
    【M30】代理类
    C++数组
    【M27】要求或者禁止对象产生于heap之中
    C++ delete operator做了什么事
    【M33】将非尾端类设计为抽象类
    【M32】在未来时态下发展程序
    【M34】如何在同一个程序中结合C++和C
    【M25】将构造方法和非成员方法虚化
  • 原文地址:https://www.cnblogs.com/RegressionWorldLine/p/7695601.html
Copyright © 2020-2023  润新知