2020-02-09 07:59:40
学习QT多线程编程之前,有必要先熟悉事件循环的概念。先看一个单线程界面程序的主函数代码:int main(int argc, char* argv[])
{
QApplication app(argc, argv);
// 构造主窗口对象并显示
MainWindow w;
w.show();
// 进入事件循环
return app.exec();...
2020-02-08 16:12:33
勇研究了一下QT的多线程,是一个QThread的类,使用方法也C#的Thread类相似。QT的ui界面也称为界面线程,只有它可以更新UI上面的信息,其它的子线程如果想要更新Ui信息,必须通过消息传递给主线程进行更新。这个其实也是和C# 中一样的。在C#中,子线程通过通过调用主界面上的控件的Invoke来委托ui线程执行更新信息的任务。Thread.h#pragma once
#include...
2020-02-08 10:40:16
这方面的应用,主要用来读写配置文件、写生产数据文件这些方面。也算是经常用到的功能了。代码:#include "QtForOpencv.h"
#include <opencv2\opencv.hpp>
#include <opencv2\core.hpp>
#include <opencv2\imgcodecs.hpp>
#includ...
2020-02-07 20:37:11
在C++中学习过程中,我们都知道:delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?!注:本文暂不涉及智能指针(smart pointer)相关的东西,你可以考虑 Qt 智能指针学习 一文Qt半自...
2020-02-07 16:06:19
本篇演示了下面的内容:QLabel中鼠标常用事件定时器的二种实现方式负责事件分发的event事件负责事件过滤的eventFilter下面的演示代码中,界面上第一个label是一个提升为Mylabel类的自定义控件.其它的是普通的labelMyLable.h#pragma once
#pragma execution_character_set("utf-8")
#inclu...
2020-02-07 15:19:40
自定义控件在C#中用得很多,所以我们有必要看看QT里面是如何实现的。Qt的自定义控件,跟新增一个新窗口步骤是一样的,只不过最后我们在另外一个窗口上如果想引用的话,先放一个QWidget控件上去,然后使用右键菜单的“提升为”功能,可以把继承为我们新定义的窗口。下面勇哥说说详细步骤:(1)你需要添加Qt Class,普通的C++类是不可以的。选择Qt GUI Class,这个类会添加一个Ui窗体。(2...
2020-02-07 07:44:52
勇哥今天试着运行debug下的exe,结果报错, “由于找不到Qt5Widgetsd.dll。。。。”第一感觉是把这些dll复制到debug目录去应该就可以了。但是奇怪的是vs2013编译后直接运行却不会报错。勇哥测试时用的环境是: win10 64位+ vs2013+ qt5.6+msvc2013_64其实肯定是可以通过配置环境变量来解决问题的。勇哥这边在系统变量path中添加两个路径:G:\Q...
2020-02-06 22:48:51
QString//QString定义
QString s1 = "abc";
QString s2("hello");
//字符串连接
QString s = s1 + s2;
//组包
s = QString("a = %1, b = %2, c = %3").arg(250).arg("hello"...
2020-02-06 22:42:43
QStringList 初始化 QStringList qstrList;
qstrList<<"Android" << "Qt Creator" << "Java" << "C++";
QStringListIterator strIterator(qst...
2020-02-06 22:04:20
基本上C#中我们常见的控件都包含了。QListWidget这个相当于C#中的listBox控件QTreeWidget这个相当于C#中的listView控件QTableWidget这个是C#中的dataGridView控件QStackedWidget这个就是没有标签显示的TabWidget控件QLabel在QT中,这个控件除了显示文字,还可以显示图片,电影,gifQTabWidget这个相当于C#中...
2020-02-06 19:06:11
在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。在QT5的帮助文档中,可以看出以下几点:使用arg(str1, str2, str3)这种方法进行替换。使用arg(str1).arg(str2).arg(str3)这种方法进行替换。使用arg(int, int, int)这种方式进行替换。解释以下两种方法:一:使用arg(str1, str2, st...
2020-02-06 18:27:02
这篇勇哥要熟悉一下QT的信号槽怎么样快速实现。想要快速实现就不能完全敲代码,可以借助于QT的UI编辑器来完成。另外通过常见的QCommboBox控件来熟悉控件的操作。还有多个窗口是如何调用。代码:QtForOpencv.h#pragma once
#pragma execution_character_set("utf-8")
#include <QtWidgets/...
2020-02-04 18:50:26
今天研究一下常见界面控件。包括下面的内容: QMainWindow菜单栏只允许一个工具栏可以有多个状态栏只允许 一个铆接部件这个就是浮动窗口,可以有多个核心部件核心部件可以是文本编辑,图片编辑控件等。只允许 一个。资源文件 资源 文件的引用方式是:":+前缀+文件名" 可以在UI编辑器中创建资源,并复制资源路径。QMainWindow是创建QT GU...
2020-02-04 18:44:50
Qt中文显示乱码解决方法一、Qt4中的解决方法方法1:在程序开始时增加初始编码类型#include < QTextCodec >int main(int argc, char **argv){....................QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));QTextCod...
2020-02-04 18:38:41
先来看一下最熟悉的QMessageBox::information。我们在以前的代码中这样使用过:QMessageBox::information(NULL, "Title", "Content",
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);现在我们从API中看看它的函数签名:static...
2020-02-04 16:08:52
前言勇哥对于C语言,C++早些年有一些接触,这个系列贴子就记载一下C++应用框架的学习经验。
在写程序时,UI、基础类库、应用程序框架对于vc来讲,只能依靠MFC和QT了。
勇哥对MFC有很强的抵触,它长得丑,很多地方反人类,唯一的好处是VC原生自带的。
所以还是先研究一下QT,再研究MFC吧,否则会带了很大的挫折感。
另外,采用vc++进行.net开发,即托管方式开发,可以使用WPF做界...
2020-02-03 21:32:24
关于这个问题其实有很多解决帖子:如下参考博客是一个不错的帖子:https://blog.csdn.net/u012814856/article/details/76343540 我遇到的问题的详细log如下:1>qtmain.lib(qtmain_win.obj) : error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1800”不匹配值“1900”(display.o...
2020-02-03 19:32:55
简述在分享所有基础知识之前,很有必要在这里介绍下常用的窗口-QWidget、QDialog、QMainWindow。熟悉Qt的同学都应该知道,在新建Qt Widgets项目进行类信息选择时会碰到它们,没错,很巧,每次都能碰到。所以,在以后的Qt开发中,我们会经常和它们打交道。常言道,知己知彼,百战不殆。只有了解它们、熟悉它们,才能更好地驾驭它们。。。QWidget继承于QObject和QPaint...
2020-02-03 19:16:42
VS2019:基于Qt+OpenCV创建项目一、前言二、具体配置流程VS创建Qt项目插件安装需要创建VS中Qt项目配置OpenCV三、测试输出如下:四、待更新内容五、参考文档一、前言如标题所说,这篇文章是基于Qt和OpenCv来创建项目,所以 首先应该安装Qt和OpenCv,本篇文章主要阐述如何配置,安装Qt和OpenCV请参考已下文章。环境:win10,VS 2019,qt 5.12.5,ope...
2020-02-03 16:29:30
模板匹配是机器视觉里面最重要的内容之一,如果没有它,像一些定位的案子就没办法开展了。这个是需要重点研究的话题。演示代码:完全引用下贾志刚老师的代码。从效果上来看,完全没有办法和halcon的模板匹配进行比较,这个真是让人沮丧的结果。难怪群里有些朋友说,OpenCV的模板匹配想要实用,需要自己写算法。#include <opencv2/opencv.hpp>
#include <...
2020-02-03 14:25:01
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
Mat src; Mat hsv; Mat hue;
int bins = 12;
void Hist_And_B...
2020-02-03 13:44:50
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
string convertToString(double d);
int main(int argc, char*...
2020-02-03 10:16:17
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src, dst;
src = imr...
2020-02-03 09:17:49
这一课讲了两个直方图有关的理论,重点在理论知识。即:什么是直方图、直方图均衡化。勇哥很欣赏贾志刚老师的讲课,理论与实践结合,许多理论都丰富了勇哥对halcon算子的认识。在之前,学习halcon主要精力都是在学习算子怎么用,从来没可能了解它的基础理论,现在贾志刚老师这套opencv的教程则可以反哺halcon的基础理论。演示程序:#include <opencv2/opencv.hpp>...
2020-02-02 20:42:01
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int index = 0;
Mat src, dst,mapx,mapy;
void updateMap(void)...
2020-02-02 16:48:58
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
Mat src, dst;
src = imr...
2020-02-02 15:52:01
找线找圆是勇哥感兴趣的话题,在机器视觉里面,没有这个功能是没办法干活的。不过,遗憾的是,勇哥按照视频里面做,曝出下面的错误。花了几个小时网上求解,不得解,郁闷!只能暂时先把贴子写下去,有解决办法再回来补充贴子了!补注:2020/2/2勇哥发现错误的原因了,我把HoughLinesP写成了HoughLines,后者是老手用的,所说要自己反变换到平面空间(暂时不懂这个)。演示代码:#include &...
2020-02-02 13:33:28
在使用opencv时发现有个很奇怪的问题,可以编译debug版本不可以编译release版本,总是提示无法打开源文件opencv2/opencv.hpp......一般都是配置不对,如下打开属性管理器配置release版本属性如下 :转载自:https://blog.csdn.net/cindywry/article/details/89846854...
2020-02-02 13:26:42
简单的学习了一段时间Opencv3.0,最近在做霍夫变换时经常出现问题,问题如下: 自己也百度、谷歌了很长时间,发现说的都不是很好,也不能解决问题。最后自己一点点调试,一点点验证最后成功的解决了问题。一、首先我的运行平台是win10+opencv3+vs2015+64位 之前在进行程序调试,在链接器的输入附加依赖项一直输入opencv_ts300.lib和opencv_world300.lib,...
2020-02-02 11:10:39
Canny算子的原理是比较复杂的,勇哥听了几遍都没搞明白。唉,还是先学会怎么用吧。演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int t1_value = 50;
int max_value = 255;...