Qt多线程的用法
来源:互联网 发布:无锡java培训机构 编辑:程序博客网 时间:2024/05/21 06:38
#include "qtwidget_ui.h"#include "ui_qtwidget_ui.h"qtWidget_ui::qtWidget_ui(QWidget *parent) : QWidget(parent), ui(new Ui::qtWidget_ui){ ui->setupUi(this); this->setWindowTitle("people detecting"); // QImage *image=new QImage("1.jpg"); QGridLayout* qglMain = new QGridLayout; //VideoCapture capture("15.avi"); mimage=imread("1.jpg"); //距离边界,左,上,右,下 qglMain->setContentsMargins(10,10,10,10); //设置部件的间隔 qglMain->setSpacing(20); //行比例 (行码,比例值) qglMain->setRowStretch(0,1); qglMain->setRowStretch(1,1); qglMain->setRowStretch(2,1); qglMain->setRowStretch(3,1); qglMain->setRowStretch(4,1); qglMain->setRowStretch(5,1); qglMain->setRowStretch(6,1); qglMain->setRowStretch(7,1); //列比例 (列码,比例值) qglMain->setColumnStretch(0,8); qglMain->setColumnStretch(1,8); qglMain->setColumnStretch(2,1); qglMain->setColumnStretch(3,1); qglMain->setColumnStretch(4,1); qglMain->setColumnStretch(5,1); qglMain->setColumnStretch(6,1); qglMain->setColumnStretch(7,1); qlabVdo = new QLabel; //设置label的外观 qlabVdo->setFrameStyle(QFrame::Panel|QFrame::Sunken); /* QImage qlShow=image->scaled(qlabVdo->width(),qlabVdo->height(),Qt::IgnoreAspectRatio ,Qt::SmoothTransformation); qlabVdo->setPixmap(QPixmap::fromImage(qlShow)); qlabVdo->setVisible(true); */ qglMain->addWidget(qlabVdo,0,0,2,5); //设置线程 m_picProc=new procimage(qlabVdo); m_thrProc=new QThread; //lable for(int i=0; i<LABROWNUM; i++) for(int j=0; j<LABCOLNUM; j++){ qlabPIC[i*LABCOLNUM+j] = new QLabel; qlabPIC[i*LABCOLNUM+j]->resize(QLABLEWIDTH,QLABLEHEIGHT); //设置外观 qlabPIC[i*LABCOLNUM+j]->setFrameStyle(QFrame::Panel|QFrame::Sunken); /* qlShow=image->scaled(qlabPIC[i*LABCOLNUM+j]->width(),qlabPIC[i*LABCOLNUM+j]->height(),Qt::IgnoreAspectRatio ,Qt::SmoothTransformation); qlabPIC[i*LABCOLNUM+j]->setPixmap(QPixmap::fromImage(qlShow));*/ showImage(qlabPIC[i*LABCOLNUM+j],mimage); qglMain->addWidget(qlabPIC[i*LABCOLNUM+j],i,j+5); } //button pButton[0]=new QPushButton; pButton[1]=new QPushButton; pButton[2]=new QPushButton; pButton[3]=new QPushButton; pButton[0]->setText("打开视频"); pButton[1]->setText("播放视频"); pButton[2]->setText("暂停视频"); pButton[3]->setText("特征提取"); for(int i=0;i<BUTTONROW;i++) for(int j=0;j<BUTTONCCLNUM;j++){ pButton[i*BUTTONCCLNUM+j]->resize(BUTTONWIDTH,BUTTONHEIGHT); //设置最大长度 pButton[i*BUTTONCCLNUM+j]->setMaximumWidth(200); //设置最小宽度 pButton[i*BUTTONCCLNUM+j]->setMinimumHeight(40); // pButton[i*BUTTONCCLNUM+j]->setGeometry(10,10,BUTTONWIDTH,BUTTONHEIGHT); qglMain->addWidget(pButton[i*BUTTONCCLNUM+j],3+i,j); } //pButton[0] clicked() QObject::connect(pButton[0],SIGNAL(clicked()),this,SLOT(OpenFiles())); QObject::connect(pButton[1],SIGNAL(clicked()),this,SLOT(StartPlay())); QObject::connect(pButton[2],SIGNAL(clicked()),this,SLOT(StopPlay())); QObject::connect(pButton[3],SIGNAL(clicked()),this,SLOT(DetectPlay())); //SpinBox和Slider pspinBox=new QSpinBox; pSlider=new QSlider(Qt::Horizontal); pSlider->resize(300,30); pspinBox->resize(30,30); pspinBox->setRange(0,140); pSlider->setRange(0,140); //信号和槽 QObject::connect(pspinBox,SIGNAL(valueChanged(int)),pSlider,SLOT(setValue(int))); QObject::connect(pSlider,SIGNAL(valueChanged(int)),pspinBox,SLOT(setValue(int))); pspinBox->setValue(35); qglMain->addWidget(pSlider,6,0,1,2); qglMain->addWidget(pspinBox,6,2); //Tableview ptableView=new QTableView; ptableView->resize(500,240); //添加表头 m_model=new QStandardItemModel(); m_model->setColumnCount(5); m_model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("number")); m_model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("name")); m_model->setHeaderData(2,Qt::Horizontal,QString::fromLocal8Bit("sex")); m_model->setHeaderData(3,Qt::Horizontal,QString::fromLocal8Bit("adress")); m_model->setHeaderData(4,Qt::Horizontal,QString::fromLocal8Bit("time")); //设置表格属性 ptableView->setModel(m_model); //表头信息显示居左 ptableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); // ptableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter); //设置列宽不可变 //ptableView->horizontalHeader()->setResizeContentsPrecision(QHeaderView::Fixed); // ptableView->horizontalHeader()->setResizeContentsPrecision(QHeaderView::Fixed); ptableView->setColumnWidth(0,101); ptableView->setColumnWidth(1,102); ptableView->setColumnWidth(2,102); ptableView->setColumnWidth(2,105); ptableView->setColumnWidth(2,105); ptableView->verticalHeader()->hide(); //添加行 for(int i=0;i<6;i++) { m_model->setItem(i,0,new QStandardItem("201403024102")); //设置字符颜色 // m_model->item(i,0)->setForeground(QBrush(QColor((255,0,0))); //设置字符位置 // m_model->item(i,0)->setTextAlignment(Qt::AlignCenter); m_model->setItem(i,1,new QStandardItem(QString::fromUtf8("冯策"))); m_model->setItem(i,2,new QStandardItem(QString::fromUtf8("冯策"))); } qglMain->addWidget(ptableView,2,3,6,5); //将对话框固定,不允许用户更改 // qglMain->setSizeConstraint(QGridLayout::SetFixedSize); this->resize(1080,720); this->setLayout(qglMain);}qtWidget_ui::~qtWidget_ui(){ delete ui;}//打开文件void qtWidget_ui::OpenFiles(){ fileName=QFileDialog::getOpenFileName(this,tr("Open File"),"/",tr("All File(*.*)")); QFile file(fileName); m_fileInof=QFileInfo(fileName); m_fileName=m_fileInof.fileName(); m_filePath=m_fileInof.absolutePath()+"/"+m_fileName; //去掉边框设定 qlabVdo->setFrameStyle(QFrame::NoFrame); //qlabVdo->setText(m_filePath); // m_picProc->m_falge=true; if(!m_picProc->m_falge) { m_thrProc->quit(); m_picProc->m_falge=true; } if(file.open(QIODevice::ReadOnly|QIODevice::Text)) { m_getFileName=m_filePath.toStdString(); m_picProc->m_getFileName=m_getFileName; VideoCapture capture(m_getFileName); Mat frame; capture>>frame; showImage(qlabVdo,frame); pButton[1]->setEnabled(true); pButton[2]->setEnabled(true); pButton[3]->setEnabled(true); } else { QMessageBox::information(NULL,NULL,"open file error"); }}//开始播放void qtWidget_ui::StartPlay(){ m_picProc->m_falge=true; m_picProc->moveToThread(m_thrProc); connect(m_thrProc,SIGNAL(started()),m_picProc,SLOT(onProc())); m_thrProc->start(); pButton[0]->setEnabled(false); pButton[1]->setEnabled(false);}//停止播放void qtWidget_ui::StopPlay(){ m_picProc->m_falge=false; // pButton[0]->setEnabled(true); pButton[1]->setEnabled(true);}void qtWidget_ui::DetectPlay(){ pButton[0]->setEnabled(true);}
Qt在lable上显示opencv的图像
void showImage(QLabel *qlabShow,Mat cmImage){ Mat cmShow = cmImage.clone(); cvtColor(cmShow,cmShow,COLOR_BGR2RGB); QImage qiImage = QImage((const uchar*)(cmShow.data), cmShow.cols, cmShow.rows, cmShow.cols*cmShow.channels(), QImage::Format_RGB888); QImage qiShow = qiImage.scaled(qlabShow->width(),qlabShow->height(),Qt::IgnoreAspectRatio, Qt::SmoothTransformation); qlabShow->setPixmap(QPixmap::fromImage(qiShow)); qlabShow->show();}
阅读全文
0 0
- Qt多线程的用法
- Qt多线程的正确用法
- QThread的用法!qt多线程编程
- [转] Qt多线程的正确用法
- qt 多线程用法
- QT多线程的学习
- qt的多线程机制
- Qt的多线程实现
- Qt多线程的实现
- QT定时器的用法
- Qt QString的用法
- QT文档的用法
- Qt on_pushButton_clicked()的用法
- Qt on_pushButton_clicked()的用法
- Qt QTableWidget的用法
- QT--foreach的用法
- Qt on_pushButton_clicked()的用法
- 多线程+管道的用法
- 深入理解Lucene默认打分算法
- 1499: [NOI2005]瑰丽华尔兹
- CentOS 安装Python3 及 Pip3
- Bootstrap3.0学习第五轮(表格)
- mysql日常操作语句
- Qt多线程的用法
- Android利用ViewPager实现图片浏览,解决内存问题
- Unity3D 阴影和深度纹理总结
- Bootstrap3.0学习第六轮(表单)
- [js]02css基础-清除浮动
- Bootstrap3.0学习第七轮(按钮)
- linux查看启动和运行时间
- 20非常有用的JAVA程序片段
- PHP7.0微信公众平台开发3: API接口的调用代码模板