一、什么是QStyleQt是一个跨平台的类库,相同的界面组件在不同的操作系统上显示效果是不一样的QStyle是封装了GUI界面组件外观的抽象类,Qt定义了QStyle类的一些子类,应用于不同的操作系统,如QWindowsStyle、QMacStyle等。这些样式是Qt CUI模块自带的,在不停的平台上编译运行的程序具有缺省的样式,QApplication::style()可以返回应用程序缺省的样式QT组件Qt内置的界面组件都是用QStyle进行绘制,以保证它们在与运行平台的界面效果一直例如下图是
(一)qApp或者QApplication用法1:谈到QApplication的类不得不提及这个类在main()函数中创建的对象还有一个与之对应的全局宏qApp,我们可以发现他们是同一个内存对象,也就是说可以在程序的任何地方访问app对象:我们可以利用qApp来退出事件循环从而退出应用,正如上图中lambda表达是那样,点击了pushButton按钮,调用quit() 函数。观察控制台输出发现我们的最顶级widget在退出应用时被析构,没有内存泄露。用法2://用于在传输大文件时使界面不会冻结
迭代器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