qt界面编写流程记录

qt的关键在于信号与槽机制。

1. 利用qtcreator 创建   qt widgeets application 工程

main.cpp   mainwindow.cpp  mainwindow.h  文件    .ui 界面设计文件

#include "mainwindow.h"
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
QApplication  MainWindow   a.exec() 

2.    打开 mainwindows.ui 界面文件设计界面:  添加一个label 显示图片

3.   编译一次,则会在build文件夹下生成 ui_ mainawindows.cpp文件。界面相关的ui 类

QLabel *labelImage;

4   mainwindow.h 文件的书写

1)  相应的成员与成员函数

    QImage qimg;
    QPixmap pm;
    cv::Mat img_test;
    int id1,id2,id3;  

    CameraEstimation* pCam_qr_estimation ;
    void init(char* addr,int camId);
    QImage Mat2QImage(cv::Mat const& src) ;
    cv::Mat QImage2Mat(QImage const& src) ;

protected:
    void timerEvent(QTimerEvent *event);

2) 信号

signals:
    void imageReady();

3) 槽函数

    void imgShow();

4   mainwindow.cpp 文件的书写

1) 关联信号与槽函数   QObject::connect

   ui->setupUi(this);  //ui启动

 // 开启一个1秒定时器,返回其ID
    id1 = startTimer(50);
    QObject::connect(this,&MainWindow::imageReady,this,&MainWindow::imgShow);
 

2)  信号释放

        emit imageReady();

定时事件触发释放信号

void MainWindow::timerEvent(QTimerEvent *event)
{
    // 判断是哪个定时器
    if(event->timerId() == id1)
    {
        qDebug() << "timer1";
        pCam_qr_estimation->run();  //opencv一些列的操作
         pCam_qr_estimation->pQrDetect_->t_[0];

        qimg = Mat2QImage(pCam_qr_estimation->frame);
        img_test = QImage2Mat(qimg);
        emit imageReady();
    }
    else
    {
        qDebug() << "timer erro";
    }
}

3) 槽函数的实现:在 labelImage  中显示图片。

void MainWindow::imgShow()
{
    //qimg.load("/home/yhzhao/Desktop/12.png");
    ui->labelImage->setPixmap(QPixmap::fromImage(qimg));
    qDebug()<<"Tigger";

}

5) 工程有缩略,运行结果如下图。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 08:50:55

qt界面编写流程记录的相关文章

qt之旅-1纯手写Qt界面

通过手写qt代码来认识qt程序的构成,以及特性.设计一个查找对话框.下面是设计过程 1 新建一个empty qt project 2 配置pro文件 HEADERS += Find.h QT += widgets SOURCES += Find.cpp main.cpp 3 编写对话框的类 代码如下: //Find.h #ifndef FIND_H #define FIND_H #include <QDialog> class QCheckBox; class QLabel; class QL

保研流程记录

目录 保研流程记录 本校的保研名额获取 夏令营(一般4月份开始,持续到9月初),预推免9月初,九推9.28之后 考核内容:一般是机试+专业面试+英语面试 参考1: 参考2(主要是预报名) 参考3 NEU预推免流程(9月9号) SYSU预推免流程(9月17号) BNU预推免流程(9月26号) 最后去向 保研流程记录 本来9月底保研完就想写的,但是当时有点亢奋就没写,之后被邀请给学弟学妹做经验分享的时候,索性就写的完整一点. 本校的保研名额获取 CS专业:前六个学期专业前10%+CET-6(>=42

项目经验谈---IM新消息界面刷新异常处理记录

项目中使用到ContentObserver来观察Provider的变化,当对Uri做数据库操作时对应的Provider会发一条Notify消息调用UI上层的ContentChange方法,在这个ContentChange方法中是重新对本会话的消息表的Uri查询一次,查询完毕后更新界面并将listView滑到最底部,有发现如果删除某会话的最后一条数据再新增一条数据时界面没有刷新的异常.排查后发现每一条短消息对应一个ThreadId,一旦删除了某个会话中的最后一条消息,在新建一条信息会重新创建一个新

Qt 界面使用自定义控件 &quot;提升为&quot;

1.效果图 我做了一个非常简单的例子,一个可以显示颜色的QLabel,边上有个按钮,点击,跳出颜色选取的Dialog,然后选择一个颜色,这个QLabel会变成什么颜色. 2.ColorLabel 我们先把这个自定义的类写好: 头文件: #ifndef COLORLABEL_H #define COLORLABEL_H #include <QLabel> #include <QPainter> class ColorLabel : public QLabel{ Q_OBJECT pu

Qt界面美化 QSS

目前发现在Qt-Design中右击控件,可以选择Change StyleSheet ------------------------以下总结不太对 刚接触Qt,发现Qt Design无法对每个控件进行颜色风格设置.正在纳闷如此受欢迎的开发工具,怎么会没有这种,Delphi,VB,VC,C#都具备的基本功能呢? 后来在CSDN上才知道,Qt已经走在这些工具的最前方了,把界面已经独立出来和web编程一样.web有CSS专门美化工作.而Qt也有QSS进行美化设计.完全可以不影响程序开发.而且可以直接调

UI界面设计流程

UI界面设计流程 UI界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支.具体包括软件启动封面设计,软件框架设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计,安装过程设计,包装及商品化. 软件UI界面设计的三大原则是:置界面于用户的控制之下.减少用户的记忆负担.保持界面的一致性.一般来讲,软件UI界面设计在工作流程上可分为结构设计.交互设计.视觉设计三个部分. 一.结构设计(Structure Design) 结构设计也称概念设

在ROS中使用QT界面

在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Templates (1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令: $ sudo apt-get install ros-indigo-qt-ros 这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgui的package $ cd

Xamarin iOS教程之编辑界面编写代码

Xamarin iOS教程之编辑界面编写代码 Xamarin iOS的Interface Builder Interface Builder被称为编辑界面. 它是一个虚拟的图形化设计工具,用来为iOS应用程序创建图形界面. 单击MainStoryboard.storyboard文件,就能够打开编辑界面了. 在Xamarin Studio 5.2.1后,编辑界面直接使用的是Storyboard故事面板,曾经则使用的是XIB(对于XIB的使用会在后面的章节中解说).大学霸它们之间最大的不同在于Sto

neutron plugin 与 extension 编写流程

neutron plugin 与 extension 编写流程 关于neutron,它是openstack中管理网络相关的一个项目,它主要负责管理了openstack中的虚拟网络,它将网络作为一种服务提供给租户,它的设计遵循了SDN(soft define network)的设计原则从而实现了网络的虚拟化. neutron采用了插件技术,关于neutron的具体技术细节,可以参考: https://yeasy.gitbooks.io/openstack_understand_neutron/co