2020-02-17 13:34:42
一、回顾上一篇文章超级实用的属性浏览器控件--QtTreePropertyBrowser讲了怎么去编译QtTreePropertyBrowser库,并且可以简单实用。由于我下载的库是基于Qt4的版本,所以编译起来也费劲巴拉的,改了好久的源码才编译通过。本篇文章我们核心讲解的是怎么把这个库编译成动态库,让别的模块去动态调用。这里引入Qt官方维护的模块QtSolutions,里边就包含了QtTreeP...
2020-02-17 11:01:25
本篇博客的目的是简单介绍:创建一个用QLabel类来显示图片的自定义控件的编写。如果想实现在图片上绘制文字、箭头和曲线,请参考我的第二篇博客源码!!!给大家一个链接~【Qt自定义控件的创建与初步使用(二)之图片上绘制文字、箭头、曲线 】在写自定义控件的过程中遇到了很多的难题,但都慢慢解决了,本人对Qt自定义控件的认识还不深刻,做的不对的地方,还请大家指出,我会尽快修改,免得误导他人!同时推荐...
2020-02-17 10:01:26
这个QtTreePropertyBrowser控件勇哥是必须要搞清楚怎么使用的,因为它实在是太有用了。在做机器视觉程序时,许多选项用它个控件进行设置非常方便,否则的话,你得拖入无数个lable, button。(界面右边就是QtTreePropertyBrowserr控件的演示)qt这个控件由于不是QT5.6自带(但是奇怪的是却自带源码),怎么把它激活用起来了? 网上的资料真是混乱得可怕,各平台不...
2020-02-16 21:10:49
前言之前,已经详细说明了QtPropertyBrowser的安装配置,可参见我的博客《QtPropertyBrowser控件在Qt5.5上的安装配置》,下面具体讲述如何使用QtPropertyBrowser中QtTreePropertyBrowser控件。添加内容QtTreePropertyBrowser是通过Manager来管理属性的,他提供了很多类型的管理,属性表里的属性条目,是通过Manag...
2020-02-16 19:02:36
如下有问题的代码:#include <QCoreApplication>
#include <QMap>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMap<QString, QStr...
2020-02-16 18:08:30
在网上找了很多,结果很多是雷同的。然后自己看了些汉字编码规则,结合网上的一些实例,写出了这篇博客。首先看测试代码和结果:int main()
{
QStringList tests;
tests << "我是中国人"
<< "你好朋友";
foreach (QString...
2020-02-15 11:36:38
像在任何以技术为中心的行业中一样,人们会对机器视觉和图像处理中的新技术通常会产生热情,并容易演变成炒作。炒作与实际应用效果之间的界线在于成功实施。在整个2019年,机器视觉行业中的一些新技术得到了实际的实施与应用。在机器视觉行业中备受关注的热门技术如:深度学习,高光谱/多光谱成像,偏振,嵌入式视觉,3D成像和计算成像等充满了期望。我们通过介绍这些技术的重要性并了解它们在视觉行业中的应用发展情况做一...
2020-02-15 11:20:15
机器视觉处理软件:用来完成输入图像数据的处理,通过一定的运算得出结果,这个输出的结果可能是PASS/FAIL信号、坐标位置、字符串等。 常见的机器视觉软件以C/C++图像库,ActiveX控件,图形式编程环境等形式出现,可以是专用功能的(比如仅仅用于LCD检测,BGA检测,模版对准等),也可以是通用目的的(包括定位、测量、条码/字符识别、斑点检测等)。 主流的机器视觉软件有:侧...
2020-02-14 16:14:47
Qt的QString类提供了很方便的对字符串操作的接口。使某个字符填满字符串,也就是说字符串里的所有字符都有等长的ch来替代QString::fill ( QChar ch, int size = -1 )例如QString str = "Berlin";
str.fill('z');
// str == "zzzzzz&quo...
2020-02-14 16:04:45
QStringList fonts;
fonts << "Arial" << "Helvetica" << "Times" << "Courier";
QString str = fonts.join(",");
QString s...
2020-02-14 15:45:54
一般情况下,延时大概分为两类,一个是非阻塞延时,一个是阻塞延时,但从名称上应该都可以看出来具体的含义,下面针对这两类延时方法,做一个具体的说明和代码实现:一、关于Qt实现非阻塞延时的方法:void QSleepTimeSet::Delay_MSec(unsigned int msec)
{
QTime _Timer = QTime::currentTime().addMSecs(mse...
2020-02-14 15:41:33
//适用于关闭后台进程的方法
QString c = "taskkill /im notepad.exe /f";
int pInt = QProcess::execute(c);
//关闭后台notepad.exe进程,阻塞式运行,一直占用cpu,成功返回0,失败返回1
qDebug()<<"pInt:"...
2020-02-14 15:03:20
1、简单使用 - 增加、删除、插入效果图链接信号和槽connect(ui.addBtn, SIGNAL(clicked()), this, SLOT(AddItem()));
connect(ui.deleteBtn, SIGNAL(clicked()), this, SLOT(DeleteItem()));
connect(ui.insertBtn, SIGNAL(clicked()), t...
2020-02-14 08:33:27
装有vistual assist插件的vs2013打开工程提示语法错误,但是可以正常编译运行。这又是什么鬼呢?经过观察,在vs的状态栏上,如果vistual assist显示初始化成功,则打开工程后没有问题。一定提示初始化失败,则出现上面的现象。(vistual assist出现这种错误)如果重新打开工程还是不行,可以尝试"清理解决方案",重新编译后保存退出,再打开,这时候vi...
2020-02-13 21:53:15
代码如下:QFile file(filepath + "/" + filename);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)){
auto res = file.readAll();
QString s1(res);
auto list1 = s1.split("...
2020-02-13 15:17:37
C++98 auto早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期:int a =10 ; //拥有自动生命期auto int b = 20 ;//拥有自动生命期static int c = 30 ;//延长了生命期C++98中的auto多余且极少使用,C++11已经...
2020-02-13 14:02:12
tuple容器(元组), 是表示元组容器, 是不包含任何结构的,快速而低质(粗制滥造, quick and dirty)的, 可以用于函数返回多个返回值;tuple容器, 可以使用直接初始化, 和"make_tuple()"初始化, 访问元素使用"get<>()"方法, 注意get里面的位置信息, 必须是常量表达式(const expressio...
2020-02-13 11:55:23
在标准C++中,并没有foreach关键字。但是在QT中,可以使用这一个关键字,其主要原因是QT自己增加了这一个关键字,就像slots和signals、emit等一样。增加的foreach关键字在编译时会进行预处理。其用法为:foreach (varItem , Items) // foreach(variable ,container)其中,varItem(variable)是容器Items(...
2020-02-13 11:02:42
上一篇文章中详细讲了讲C++异常处理模型的trycatch使用语法,其中catch关键字是用来定义catch block的,它后面带一个参数,用来与异常对象的数据类型进行匹配。注意catch关键字只能定义一个参数,因此每个catch block只能是一种数据类型的异常对象的错误处理模块。如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的cat...
2020-02-13 10:57:19
以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try
{
BYTE* pch ;
pch = ( BYTE* )00001234 ; //给予一个非法地址
*pch = 6 ; //对非法地址赋值,会造成Access Violation 异常
}
catch(...)...
2020-02-13 10:08:39
引言异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个局部无法处理的问题时:1.终止程序(例如atol,atoi,输入NULL,会产生段错误,导致程序异常退出,如果没有core文件,找问题的人一定会发疯)2.返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返回NULL指针)3.返回...
2020-02-13 09:48:05
引言我们寄希望使用异常这种方法,让一个函数发现自己无法处理的错误时抛出异常或者做进一步处理。未使用异常处理机制的程序,当遇见无法处理的问题时可能会产生如下后果:程序自行终止(然后程序员开始漫长的找bug过程)返回一个表示错误的值(很多系统函数都是这样,例如malloc,内存不足,分配失败,返回NULL指针)返回一个合法值,让程序处于某种非法的状态(最坑爹的东西,有些第三方库真会这样)调用一个预先准...
2020-02-13 09:22:06
如果想要有效的管理一个稍微复杂一点的体系,针对其中事物的一套统一、带层次结构、清晰明了的命名准则就是必不可少而且非常好用的工具。活跃在生物学、化学、军队、监狱、黑社会、恐怖组织等各个领域内的大量有识先辈们都曾经无数次地以实际行动证明了以上公理的正确性。除了上帝(设它可以改变世间万物的秩序)以外,相信没人有实力对它不屑一顾。在软件开发这一高度抽象而且十分复杂的活动中,命名规则的重要性更显得尤为突出。...
2020-02-13 08:49:01
参考http://blog.csdn.net/xiamentingtao/article/details/55517203C++中的虚析构函数到底什么时候有用的,什么作用呢。一.虚析构函数的作用总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的.我...
2020-02-12 22:22:00
QT5 Thread线程继承QThread方式一.首先分析一下 QTimer Class与 Sleep()函数之间的秘密QTimer *t = new QTimer(*parent); //创建QTimer 对象t->start(_time); //计时开始每隔_time时间自动触发&QTimer::timeout信号t->stop(); //结束计时Sleep() //win...
2020-02-12 22:17:06
QFile Class1.read读文件加载文件对象 QFile file("文件地址");打开加载的文件file.open(打开方式);操作文件关闭打开的文件file.colse();void Widget::on_pushButton_clicked()
{
QFile file("L:/qtpro/_qtApp/text/t.txt");...
2020-02-12 15:33:47
前言QVariant这个类很神奇,或者说方便。很多时候,需要几种不同的数据类型需要传递,如果用结构体,又不大方便,容器保存的也只是一种数据类型,而QVariant则可以统统搞定。介绍帮助文档上说:The QVariant class acts like a union for the most common Qt data types.。QVariant 这个类型充当着最常见的数据类型的联合。QV...
2020-02-12 14:47:27
使用Qt-creator自动生成一个窗体应用程序时会自动创建一个新的类,我的程序中名为MyDialog,类的定义为:#ifndef MYDIALOG_H
#define MYDIALOG_H
#include <QDialog>
namespace Ui {
class MyDialog;
}
class MyDialog : public QDialog
{...
2020-02-12 10:02:33
简述普通情况下。我们在开发软件过程中,都会缓存一些信息到本地,能够使用轻量级数据库sqlite。也能够操作注冊表、读写配置文件。关于QSettings的使用前面已经介绍过了。比較具体,见“很多其它參考”,以下介绍下QSettings经常使用功能-读写注冊表、配置文件。长处无需指定注冊表路径普通情况下,我们须要定义一个宏,或者常量字符串来指定保存的注冊表位置。#define HKEY_CURRENT...
2020-02-11 16:43:15
一、Redis的历史与发展2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统 LLOOGG,然而没过多久该公司的创始人Salvatore Sanfilippo 便开始对MySQL的性能感 到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据 库就是Redis。不过Salvatore Sanfilippo 并不满足只将Redis...