2020-02-10 22:27:39
一、Splash窗口什么是Splash窗口?一般在大型应用程序启动时会显示一个启动画面,这个启动画面即Splash窗口特点:Splash窗口一般被设计为一个无边对话框,在Windows任务栏不显示当前窗口的图标信息。我们通常在Splash窗口中只显示一个图片,并展示软件的信息等使用场景:Splash窗口显示的时候,程序一般在后台做一些比较耗时的启动准备工作,等到软件的准备工作完成之后,Splash...
2020-02-10 22:22:30
一、文本文件文本文件是指纯文本格式存储的文件,例如:.cpp、.html、.xml文件等都是纯文本文件二、QT纯文本文件读写函数QT提供了两种读写纯文本文件的方法:①QFile类的IODevice读写功能直接进行读写②QFile和QTextStream结合起来,用流的方法进行文件读写三、QFile类功能:提供了 一个用于读/写文件的接口,它可以用来读/写文本文件、二进制文件和 Qt 资源的 I/0...
2020-02-10 21:54:01
QT提供的与文件和目录相关的类包括以下几个:QCoreApplication:用于提取应用程序路径、程序名等文件信息QFile:除了打开文件操作外,还可以复制文件、删除文件等功能QFileInfo:用于提取文件信息,包括路径、文件名、后缀等QDir:用于提取目录或文件信息,获取一个目录下的文件或目录列表,创建或删除目录和文件,文件重命名等操作QTemporaryDir、QTemporaryFile...
2020-02-10 20:50:52
一、QT的动态链接库QT的动态链接库编译后生成DLL文件(本文只讲解Windows下的动态库文件)DLL文件是在应用程序运行时才加载的,不像静态库那样在编译期就编到应用程序里。若更新了DLL文件,只要接口未变,应用程序依然可以调用使用动态链接库可以很方便地扩展应用程序的功能,但是DLL文件需要随应用程序一起发布,并且编译DLL和应用程序的Qt版本最好保持一致,否则考虑二进制兼容问题二、动态链接库的...
2020-02-10 20:24:30
一、演示案例一本案例中,服务端与客户端对数据的读取都是“行读取”服务端第一步:创建一个基于QMainWindow的窗体,类名采用默认值,然后设计窗体第二步:类的定义//省略了系统自定义的代码,只列出了自己定义的代码
#include <QTcpServer>
#include <QTcpSocket>
#include <QHostInfo>...
2020-02-10 20:19:31
一、高层网络协议类简介Qt网络模块提供了一些类实现OSI 7层网络模型中高层的网络协议,如HTTP、FTP、SNMP等,这些类主要是QNetworkRequest、QNetworkReply、NetworkAccessManagerQNetworkRequest:通过一个URL地址发起网络协议请求,也保存网络请求的信息,目前支持HTTP、FTP和局部文件URLs的下载或上传NetworkAcces...
2020-02-10 20:02:53
概念Qt样式表(style sheet)适用于定制用户界面的强有力的机制,其概念、术语是收到HTML中的CSS启发而来,不过Qt样式表是应用于窗体界面的与HTML的CSS类似,Qt的样式表是纯文本的格式定义,在应用程序运行时可以载入和解析这些样式定义,从而使应用程序的界面呈现不同的效果样式表具有继承关系,例如为一个QWidget类设置了样式表,那么QWidget类及其子类都会使用这个样式表很多软件...
2020-02-10 19:54:57
一、什么是QStyleQt是一个跨平台的类库,相同的界面组件在不同的操作系统上显示效果是不一样的QStyle是封装了GUI界面组件外观的抽象类,Qt定义了QStyle类的一些子类,应用于不同的操作系统,如QWindowsStyle、QMacStyle等。这些样式是Qt CUI模块自带的,在不停的平台上编译运行的程序具有缺省的样式,QApplication::style()可以返回应用程序缺省的样式...
2020-02-10 19:46:09
(一)qApp或者QApplication用法1:谈到QApplication的类不得不提及这个类在main()函数中创建的对象还有一个与之对应的全局宏qApp,我们可以发现他们是同一个内存对象,也就是说可以在程序的任何地方访问app对象:我们可以利用qApp来退出事件循环从而退出应用,正如上图中lambda表达是那样,点击了pushButton按钮,调用quit() 函数。观察控制台输出发现我们...
2020-02-10 19:25:37
迭代器QT支持两种类型的迭代器只读迭代器:const_iterator读写迭代器:iterator只读迭代器比读写迭代器操作速度快很多一、QList概念:是一个提供列表的模板类//函数:
insert(); //指定索引处插入值
replace(); //指定索引处替换值
append(); //尾追
prepend(); //头追
at(): //得到索引索引的值
count(...
2020-02-09 09:27:37
1、界面与逻辑基本程序架构一般包括— 用户界面模块(UI)— 业务逻辑模块(Logic)用户界面与业务逻辑如何交互?— 每个模块应该只实现单一的功能— 模块之间通过约定好的接口进行交互用户界面使用这个接口,而业务逻辑实现这个接口基本设计原则— 模块之间仅通过接口进行关联— 模块之间的关系是单项依赖的2、整体架构此时我们有什么?1、我们实现了计算器基本的界面2、我们实现了计算器的基本计算算法我们还需...
2020-02-09 09:22:14
1、Qt 对象间的关系Qt 对象间可以存在父子关系— 每一个对象都保存有它所有子对象的指针— 每一个对象都有一个指向其父对象的指针当指定 Qt 对象的父对象时— 其父对象会在子对象链表中加入该对象的指针— 该对象会保存指向其父对象的指针#include <QCoreApplication>
#include <QDebug>
void fcTest()
{...
2020-02-09 08:16:44
1、C++中的queue实现一种 先进先出 的数据结构,是一个模板类。头文件 #include <queue>用法 ( 以 int 型为例 ):queue<int> Q; //定义一个int型队列
Q.empty(); //返回队列是否为空
Q.size();...
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...