自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 收藏
  • 关注

原创 模型、视图、代理(自定义-1)

1,自定义模型#ifndef MYMODEL_H#define MYMODEL_H#include <QAbstractItemModel>#include <QModelIndex>#include <QDebug>/*** * 自定义表格视图 */class MyModel : public QAbstractItemModel{public: int col,rw; //表格模型的列数和行数 QList<QVari

2021-05-16 18:57:16 298

原创 数据库

1,新建一个工程,设计 UI界面2,创建数据库Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); // 创建数据库 db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("myDB.db"); // 打开数据库 if(!db

2021-05-16 17:46:10 344 1

原创 QJson

#include "widget.h"#include <QApplication>#include <QCoreApplication>#include <QJsonDocument>#include <QJsonArray>#include <QJsonObject>#include <QJsonParseError>#include <QJsonValue>#include <QString&.

2021-05-13 20:15:36 506

原创 QT进程间通信

<<Qt Remote Object(QtRO)实现进程间通信>>概述:这是Qt5.9以后官方推出来的新模块Qt官方推出的这个新模块是基于Socket来封装的,兼容LPC和RPCLPC即Local Process Communication,而RPC是指Remote Process Communication,两者都属于IPCQtRO能够工作于这两种不同的模式:如果用于LPC,则QtRO使用QLocalSocket;如果是用于RPC,则使用QTcpSocket。

2021-05-06 23:00:37 1039

原创 cap:8 d-pointer

d-pointer 模式!/* d-pointer 模式!*/#include <iostream>using namespace std;// 矩阵主类class Matrix;// 矩阵数据类class MatrixData { // 引用计数 int refCnt; double data[3][3]; friend class Matrix;public: MatrixData() { cout &.

2021-05-01 22:49:58 127

原创 cap-7:QTIO(QDataStream读/写自定义类型)

struct ColorText{ ColorText() {} QString m_text; QColor m_color;};QDataStream& operator <<(QDataStream &dataStream, ColorText &colorText){ dataStream << colorText.m_color << colorText.m_text; return d.

2021-05-01 16:20:19 484

原创 cap-7:C++IO(char_trait)

定义大小写不敏感的 ci_trait,并用 ci_trait 构造 ci_string!/* 定义大小写不敏感的 ci_trait,并用 ci_trait 构造 ci_string!*/#include<iostream>#include <string>using namespace std;struct ci_char_traits : public char_traits<char> { // 覆盖 eq 函数 static bool e

2021-05-01 10:59:34 136

原创 QStackedLayout

#include <QApplication>#include <QWidget>#include <QStackedLayout>#include <QPushButton>#include <QComboBox>int main(int argc, char *argv[]){ QApplication a(argc, argv); QWidget w; //主窗口 w.resize(400,400);.

2021-04-20 14:30:45 168

原创 QT窗口及其widget类

QObject 是所有 Qt 对象的基类,QPaintDevie 是所有可绘制对象的基类 部件和窗口的概念不一样 Qt::WindowType 对部件的类型进行描述,比如该部件是否是窗口,是否是子窗口,是否是对话框,是否拥有菜单栏等 1,typedef QFlags<WindowType> WindowFlags 2,enum WindowType {Widget,Window,Dialog,Sheet,...,WindowType_Mask} 3,QFlags 是 Qt 中内置的模板

2021-04-19 21:30:02 295

原创 MainWindowPluginCore

start

2021-04-19 17:15:17 89

原创 parseExtensionData

parseExtensionData(SubExtensionHandler)#ifndef SUBEXTENSIONHANDLER#define SUBEXTENSIONHANDLER#include <QDataStream>#include <QVariantMap>#include "qtezglobaldefs.h"namespace Common {struct SubExtensionHandler{ SubExtensionHand.

2021-04-19 15:44:57 118

原创 事件

事件处理方式#include <QApplication>#include<QWidget>#include<QObject>#include <iostream>using namespace std;class A:public QWidget{public: bool event(QEvent* e); //事件处理方式 1:重写虚函数 QObject::event() void mousePressEvent(Q..

2021-04-13 11:32:01 144

原创 属性系统

属性基础c.h文件:#ifndef C_H#define C_H#include<QObject>class A:public QObject{ Q_OBJECTpublic: /*通常,若属性名为 a,则相应的读取函数通常命名为 geta,设置函数命名为 seta,本例并未使用这种命名 规则*/ //声明一个类型为 int,名称为 a 的属性,并使用函数 f 读取属性值,使用函数 g 设置属性值。 Q_PROPE

2021-04-12 13:46:17 274

原创 元对象

使用反射机制获取类对象成员函数的信息a.h文件://头文件 a.h 的内容(文件读者自行创建)#ifndef A_H //要使用元对象系统,需在头文件中定义类。#define A_H#include<QObject> //因为要使用 QObject 类,为此需要包含此头文件class A:public QObject{ Q_OBJECT //启动元对象系统,必须声明此宏public: //定义 2 个构造函数、1 个信号、3 个函数。 Q_INVOK

2021-04-12 09:56:25 337

原创 动态Qml(四-创建和销毁对象2)

上一节演示了怎么动态创建(在我们需要的时候就创建)对象,但是对象本身是个 QML 文件,这节演示怎么通过文本创建对象!代码:import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true id:root width: 640 height: 480 title: qsTr("Hello World") function createItem() { Q

2021-04-10 17:58:16 331

原创 动态Qml(三-创建和销毁对象)

加载一块QML代码时,它首先会被解释执行为一个组件。 这一步包含了加载依赖和验证代码。 QML的来源可以是本地文件,Qt资源文件,或者一个指定的URL网络地址——这意味着加载时间不确定 组件创建之后,它的状态可以用来跟踪它的状态属性。 可以使用的状态值包括:组件为空 (Component.NULL) 组件加载中(Component.Loading) 组件可用 (Component.Ready) 组件错误(Component.Error)从空(NULL)状态到加载中(Loading)再到可用

2021-04-10 17:49:39 1373

原创 动态Qml(二-间接链接)

Connection 可以连接一个目标元素任意数量的信号 通过改变 target 可以在不同的时间监控不同的元素 注意当多个信号被处理调用所有操作时,执行的顺序是未定义的 当创建一个连接元素(Connection element)未指定目标属性时,默认的属性是父对象 这意味着需要显式的设置NULL来避免捕获来自父对象的信号,直到 target 被设置说白了,就是 Connection 的用法!代码:import QtQuick 2.9import QtQuick.Window 2.

2021-04-10 16:14:36 362

原创 动态Qml(一-动态加载组件)

Loader element 作为一个占位符项用来加载 Item Item 的加载通过资源属性(source property)或者资源组件(sourceCompontent)属性控制 加载元素项通过给定的URL链接加载 Item ,然后实例化一个组件 Loader element 的大小基于被加载项的大小而定,反之亦然。 如果Loader element定义了大小,或者通过锚定(anchoring) 定义了宽度和高度,被加载项将会被设置为 Loader element 的大小 如果 Loader

2021-04-10 15:24:38 1356

原创 Multimedia(五-播放列表)

作者说 Qt 5 multimedia 没有提供视频列表接口,但是好像提供了!import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.6Window { visible: true width: 1024 height: 600 title: qsTr("Hello World") Rectangle { id: root anchors.fil

2021-04-10 13:56:53 135

原创 Multimedia(四-视频流)

其实就是照相机了!import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.6Window { visible: true width: 1024 height: 600 title: qsTr("Hello World") Item { anchors.fill: parent VideoOutput {

2021-04-10 13:36:17 165

原创 Multimedia(三-声音)

当播放声音效果时,从请求播放到真实响应播放的响应时间非常重要一import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.0Window { visible: true width: 770 height: 480 title: qsTr("Hello World") Item { id: root anchors.fill: parent

2021-04-10 11:58:10 83

原创 Multimedia(二:一些参数)

上一节实现了简单的媒体播放,这节在上一节的基础上完善一下!当播放媒体时可以通过MediaPlayer元素的volume属性来控制音量 duration与position属性可以用来创建一个进度条。如果seekable属性为true,当拨动进度条时可以更新position属性 mediaObject属性的notifyInterval属性改变可以设置每个position之间更新的毫秒数,增加用户界面的平滑度。 使用status属性来监听播放器,这个属性是一个枚举,它枚举了播放器可能出现的状态:Med

2021-04-10 11:14:15 236

原创 Multimedia(一:初识)

MediaPlayer 元素有一个source属性指向需要播放的媒体。 当媒体源被绑定后,简单的调用play 函数就可以开始播放 需要配置一个 VideoOutput元素。 MediaPlayer播放通过source属性与视频输出绑定代码:import QtQuick 2.9import QtQuick.Window 2.2import QtMultimedia 5.0Window { visible: true width: 640 height: 480

2021-04-10 10:10:59 134

原创 粒子模拟(七-粒子组2)

上一节我们实现了火箭/烟雾/重力/摩擦等效果,这节我们实现火箭“死亡”之后爆炸为烟花!1,GroupGoal允许我们改变一组粒子变化到另一组粒子(当进入 GroupGoal 区域后) // 使用groupGoal属性, // 我们设置目标组改变为我们之前定义的 // 'explosion' 粒子组 GroupGoal { id: rocketChanger

2021-04-09 12:59:55 102

原创 粒子模拟(六-粒子组1)

这节我们通过前面学过的粒子相关知识,加上粒子组的用法,实现一个有意思的 Demo第一步:创建界面import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Particles 2.0Window { visible: true width: 680 height: 440 title: qsTr("Rocket..") Item{ anchors.fill: parent

2021-04-09 10:53:59 87

原创 粒子模拟(五-粒子控制)

粒子由粒子发射器发出。在粒子发射出后,发射器无法再改变粒子。粒子控制器允许你控制发射后的粒子参数。控制器的每个类型使用不同的方法来影响粒子:生命周期(Age)- 修改粒子的生命周期 吸引(Attractor)- 吸引粒子朝向指定点 摩擦(Friction)- 按当前粒子速度成正比减慢运动 重力(Gravity)- 设置一个角度的加速度 紊流(Turbulence)- 强制基于噪声图像方式的流动 漂移(Wander)- 随机变化的轨迹 组目标(GroupGoal)- 改变一组粒子群的状态

2021-04-09 08:51:19 456

原创 粒子模拟(四-粒子项)

到目前为止我们只使用了基于粒子画笔的图像来实现粒子可视化Qt也提供了一些其它的粒子画笔:粒子项(ItemParticle):基于粒子画笔的代理 自定义粒子(CustomParticle):基于粒子画笔的着色器粒子项 ItemParticle{ id:particle system: particleSystem delegate: itemDelegate

2021-04-09 08:51:07 105

原创 粒子模拟(三-粒子方向2)

点方向上一节我们使用了“角度方向”来改变粒子运动的方向和速度,这节我们试试“点方向”“点方向”是 x 和 y 共同决定粒子运动的方向 如果我们想要粒子朝着45度数方向运动,可以指定 x 和 y 相同的值! yVariation 指定了在 Y 轴上下变化的角度范围(例子在上一节的代码上修改以下代码) velocity: PointDirection { x: 100 y: 0

2021-04-08 17:45:59 194

原创 粒子模拟(二-粒子方向)

有多种可用矢量空间用来定有多种方法定义粒子的速度或加速度:角度方向(AngleDirection)- 使用角度的方向变化。 点方向(PointDirection)- 使用x,y组件组成的方向变化。 目标方向(TargetDirection)- 朝着目标点的方向变化。使用 AngleDirection 改变粒子的速度和方向代码:import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Particles 2.0Windo

2021-04-08 17:23:17 350

原创 粒子模拟(一-简单的粒子模拟和一些参数)

粒子模拟的机制有点复杂,暂时还没法理解透彻,所以 “粒子模拟”纯粹是一个学习的过程!简单的例子模拟简单例子模拟需要做的任务:绑定所有元素到一个模拟的粒子系统(ParticleSystem)。 一个向系统发射粒子的发射器(Emitter)。 一个ParticlePainter派生元素,用来实现粒子的可视化。import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Particles 2.0Window { visib

2021-04-08 16:11:48 1072

原创 Canvas(四-绘图程序)

创建四个颜色盒子,然后将这四个盒子装在 Row 定位器中,Row 定位器保存一个变量,此变量保存用户通过点击这四个盒子决定的颜色值!ColorSquare组件:import QtQuick 2.5Rectangle { id: root width: 48; height: 48 color: "green" signal clicked property bool active: false border.color: active? "#66

2021-04-08 15:07:45 133

原创 Canvas(三-关于绘图的一些技巧2)

坐标变换:就是改变画布的原点坐标了import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 240 height: 120 title: qsTr("Hello World") Item { anchors.fill: parent Canvas{ id:root anchors.fi

2021-04-08 14:24:42 146

原创 Canvas(二-关于绘图的一些技巧1)

画矩形的接口:// 填充矩形// ctx.fillRect(20,20,80,80)// 清楚矩形区域// ctx.clearRect(30,30,60,60)// 无填充的矩形// ctx.strokeRect(20,20,40,40)渐变色:注意:要注意渐变色的范围的定义方式!var gradient = ctx.createLinearGradient(100,0,100,200)gradient.addColorStop(0.0,"blue")gradient.ad

2021-04-08 10:54:53 127

原创 Canvas(一-QML绘图基本概念)

画布元素(canvas element)的基本思想是使用一个2D对象来渲染路径。这个2D 对象包括了必要的绘图函数!画布元素(canvas element)充当绘制画布。2D对象支持画笔,填充,渐变,文本和绘制路径创建命令。画一个简单的填充矩形:获取 2d 对象的代码:var ctx = getContext("2d")渲染路径的代码:// 线条宽度为 4ctx.lineWidth = 4// 画笔样式为蓝色ctx.strokeStyle = "blue"// 填充风格我

2021-04-08 09:37:10 521

原创 MVD(五-路径视图PathView)

PathView创建了一个可以让子项沿着任意路径移动的视图 沿着相同的路径,使用缩放(scale),透明(opacity)等元素可以更加详细的控制过程 当使用PathView时,你必须定义一个代理和一个路径。在这些之上,PathView本身也可以自定义一些属性的区间 通常会使用pathItemCount属性,它控制了一次可见的子项总数 preferredHighLightBegin属性控制了高亮区间 preferredHighlightEnd与highlightRangeMode控制了当前项怎样沿

2021-04-07 21:54:23 393

原创 MVD(四-形变的代理)

在下面的例子中,当点击链表项时,链表项都会展开填充整个链表视图 (ListView)。额外的间隔区域被用于添加更多的信息,这种机制使用一个状态来控制当一个链表项展开时,代理项都能输入expanded(展开)状态,在这种状态下一些属性被改变需要注意的点:1,模型、视图、代理:模型负责产生数据>>// 链表视图数据来源 ListModel { id: planets ListElement {..

2021-04-07 17:28:53 114

原创 MVD(三-视图加入动画)

为了方便使用,QML视图为每个代理绑定了两个信号,onAdd和onRemove。使用动画连接它们,可以方便创建识别哪些内容被添加或删除的动画import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World") // 主界面 Rectangle { width: p

2021-04-07 15:19:57 218

原创 MVD(二-动态视图)

ListViewimport QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Item { id: root Rectangle{ width: 80 height: 300

2021-04-07 11:17:56 185

原创 MVD(一-Model/View之Repeater)

分离数据与显示的基础模型 Repeater代码:import QtQuick 2.9import QtQuick.Window 2.2Window { visible: true width: 640 height: 480 title: qsTr("Hello World") // 定位器 Column{ spacing: 10 x:20 y:20 Repeater{

2021-04-07 10:36:18 237

原创 Animation(七-给状态的改变加过渡)

一系列的过渡能够被加入任何元素,一个过渡由状态的改变触发执行。 可以使用属性的from:和to:来定义状态改变的指定过渡。这两个属性就像一个过滤器,当过滤器为true时,过渡生效。 也可以使用“”来表示任何状态。例如from:""; to:"*"表示从任一状态到另一个任一状态的默认值,这意味着过渡用于每个状态的切换代码: // 加入过渡 transitions: [ Transition { from: "st

2021-04-07 09:35:21 92

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除