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