迭代器QT支持两种类型的迭代器只读迭代器:const_iterator读写迭代器:iterator只读迭代器比读写迭代器操作速度快很多一、QList概念:是一个提供列表的模板类//函数:
insert(); //指定索引处插入值
replace(); //指定索引处替换值
append(); //尾追
prepend(); //头追
at(): //得到索引索引的值
count(); //
1、界面与逻辑基本程序架构一般包括— 用户界面模块(UI)— 业务逻辑模块(Logic)用户界面与业务逻辑如何交互?— 每个模块应该只实现单一的功能— 模块之间通过约定好的接口进行交互用户界面使用这个接口,而业务逻辑实现这个接口基本设计原则— 模块之间仅通过接口进行关联— 模块之间的关系是单项依赖的2、整体架构此时我们有什么?1、我们实现了计算器基本的界面2、我们实现了计算器的基本计算算法我们还需要做什么?1、创建接口类(类里面都是纯虚函数)2、创建封装类(QCalculator)ICalcul
1、Qt 对象间的关系Qt 对象间可以存在父子关系— 每一个对象都保存有它所有子对象的指针— 每一个对象都有一个指向其父对象的指针当指定 Qt 对象的父对象时— 其父对象会在子对象链表中加入该对象的指针— 该对象会保存指向其父对象的指针#include <QCoreApplication>
#include <QDebug>
void fcTest()
{
QObject* p
1、C++中的queue实现一种 先进先出 的数据结构,是一个模板类。头文件 #include <queue>用法 ( 以 int 型为例 ):queue<int> Q; //定义一个int型队列
Q.empty(); &nb
学习QT多线程编程之前,有必要先熟悉事件循环的概念。先看一个单线程界面程序的主函数代码:int main(int argc, char* argv[])
{
QApplication app(argc, argv);
// 构造主窗口对象并显示
MainWindow w;
w.show();
// 进入事件循环
return app.exe
勇研究了一下QT的多线程,是一个QThread的类,使用方法也C#的Thread类相似。QT的ui界面也称为界面线程,只有它可以更新UI上面的信息,其它的子线程如果想要更新Ui信息,必须通过消息传递给主线程进行更新。这个其实也是和C# 中一样的。在C#中,子线程通过通过调用主界面上的控件的Invoke来委托ui线程执行更新信息的任务。Thread.h#pragma once
#include <QObject>
#include <QThr
这方面的应用,主要用来读写配置文件、写生产数据文件这些方面。也算是经常用到的功能了。代码:#include "QtForOpencv.h"
#include <opencv2\opencv.hpp>
#include <opencv2\core.hpp>
#include <opencv2\imgcodecs.hpp>
#include <opencv2\imgproc.hpp
在C++中学习过程中,我们都知道:delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?!注:本文暂不涉及智能指针(smart pointer)相关的东西,你可以考虑 Qt 智能指针学习 一文Qt半自动的内存管理在Qt中,以下情况下你new出的对象你可以不用 亲自去de
本篇演示了下面的内容:QLabel中鼠标常用事件定时器的二种实现方式负责事件分发的event事件负责事件过滤的eventFilter下面的演示代码中,界面上第一个label是一个提升为Mylabel类的自定义控件.其它的是普通的labelMyLable.h#pragma once
#pragma execution_character_set("utf-8")
#include "qlabel.h"
class&nb
自定义控件在C#中用得很多,所以我们有必要看看QT里面是如何实现的。Qt的自定义控件,跟新增一个新窗口步骤是一样的,只不过最后我们在另外一个窗口上如果想引用的话,先放一个QWidget控件上去,然后使用右键菜单的“提升为”功能,可以把继承为我们新定义的窗口。下面勇哥说说详细步骤:(1)你需要添加Qt Class,普通的C++类是不可以的。选择Qt GUI Class,这个类会添加一个Ui窗体。(2)在新增加的窗体上我放入了一个spinbox, 一个水平slider至于这个自定义控件上的实现代码,