自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Effective QML Part1:绑定(Binding)

文章目录Item1:绑定减少绑定数使用Connections使用Binding对象临时绑定KISS延迟绑定避免不必要的重新评估Item1:绑定如果我们能使用好绑定,他将发挥出巨大的作用。只要属性依赖于更改,就对绑定进行重新计算,这可能会导致性能下降或意外行为。即使绑定很简单,其结果也会很昂贵.因此,在使用绑定时请考虑以下规则。减少绑定数当使用绑定时,在某些情况下可能会使用单个更改的信号来...

2020-03-01 16:48:08 403

原创 Effective QML Part0:编码规范

文章目录Item 1:编码规范信号处理顺序属性的顺序函数顺序动画可以放弃部分组件的id属性赋值Import语句Item 1:编码规范本节提供有关如何格式化属性,信号和函数的顺序,以使事情变得轻松并快速切换到相关代码块。QML对象属性始终按以下顺序构造:id属性声明信号声明对象声明状态(States)变换(Transitions)信号处理器(Signal handlers)...

2020-03-01 16:08:34 253

翻译 Qt5 OpenGL教程系列1:基础渲染

文章目录OpenGLBufferQOpenGLVertexArrayObject基本渲染1.创建一个Vertex类(以简化操作)。2.将QOpenGL *类添加到Window类OpenGLBufferOpenGL中的QOpenGLBuffer对象有点像GPU上动态内存的唯一ID。这样理解有点困难,但是对于那些不熟悉的人,可以将它们近似为GPU动态内存。我们可以给GPU提供有关如何使用内存的提示...

2020-02-29 21:22:01 3723 1

翻译 Qt5 OpenGL教程系列0:创建一个窗口

在Qt 5中添加了QOpenGL类-替换了QGL类。注意:QGL *类仍然可以通过Qt5OpenGL模块使用,因此依赖于此类的旧代码仍然可以使用,但是不建议将其用于新的Qt5 OpenGL应用程序。关于Qt5 OpenGL教程系列本系列教程假定你有Qt框架的基础知识。至少了解信号与槽,知道如何创建简单的程序。如果你对文章的内容有任何不明白、需要我阐明的地方,请评论留言。对OpenGL有...

2020-02-28 22:54:57 2130

翻译 正确使用CMake

文章目录简介一个错误的例子目标(Target)和属性(Properties)构建要求与使用要求libjsonutils放下CMAKE_CXX_FLAGS使用target_link_libraries建立依赖关系导入目标好的项目应该导出目标目标如果你想做到这一点,自行完成这就是你如何使用CMake在Config.cmake中导入目标简介这篇文章探讨了所谓的现代CMake的概念,它主张放弃传统的基...

2019-05-10 18:52:53 4893 1

翻译 Linux下音频格式转换命令行工具

这里写自定义目录标题Sox音频转换使用Mplayer将多种格式的而文件编码至WAV使用FFmpeg将各种类型文件转换成各种类型文件使用Lame编码或者已不同的比特率重新编码MP3以Ogg Vorbis格式编码从音频文件中获取信息在日常工作中,我经常需要将音频数据从一种格式转换到另一种格式。 因为我通常必须在批处理作业中执行此操作,所以我主要使用命令行工具(在Linux上),如Lame,SoX(S...

2019-04-11 13:46:37 4686

原创 QML如何与QSystemTrayIcon协同工作

文章目录问题来源第一个版本系统托盘项目的结构QmlSystemTray.promain.cppsystemtray.hsystemtray.cppmain.qml第二个变种系统托盘项目的结构QmlSystemTray_2.promain.cppmain.qml问题来源将应用程序从Qt / C ++移动到Qt / QML时,遇到系统托盘的问题。目的是将系统托盘的C ++代码部分的或全部的转换为Q...

2019-03-17 10:42:45 946 1

原创 Qt QML中MVC的应用

总览QML应用程序架构最佳实践为什么要关心界面,数据,逻辑分离的问题?设计模式,如MVC,MVVM或FluxQML中的模型 - 视图分离创建清洁数据流:受Flux启发的QML架构QML的简单Flux-like MVC示例应用逻辑DataModel和存储页面和视图逻辑如何在本地存储中缓存数据?QML应用程序架构最佳实践为什么要关心界面,数据,逻辑分离的问题?使用QML + Javascrip...

2018-12-06 15:51:21 3358 1

原创 如何将带有信号与槽的C++代码暴露给QML

使用QML进行应用程序开发简单而强大。但是Qt C ++可以提高性能,提供许多功能并且不易出错。这篇文章向您展示了如何创建利用这两种语言的应用程序。文章目录如何在C ++和QML之间进行通信QML中编码的优点何时使用C ++代替如何从QML访问C ++对象在项目中创建C ++类使用QML实现带有信号和插槽的C ++类将对象公开为QML作为Context属性添加具有完整QML支持的类属性如何将C...

2018-12-05 19:19:51 806

翻译 基于HTTP/2的REST API的好处

HTTP / 1.x与HTTP / 2首先,让我们看看有哪些高层差异:HTTP / 2是二进制的,而不是文本的与HTTP / 1.x等文本协议相比,二进制协议更有效地解析,在信道上更紧凑,最重要的是,与HTTP / 1.x等文本协议相比,它们更不容易出错,因为它们通常具有一些像空白处理,大写,行结尾,空白等等的“帮助” 。例如,HTTP / 1.1定义了四种不同的解析消息的方法; 在H...

2018-11-02 15:23:31 2511 1

翻译 从Google Test 转到 Catch

前言如果你见过我,你可能会知道我是自动化测试的忠实信徒。即使对于小型项目,我也倾向于在早期实施一些测试,对于大型项目,我认为测试是绝对必要的。我可以花很长时间来讲为什么测试很重要,而你应该这样做,但这不是今天的主题。相反,我将介绍为什么我将所有单元测试从Google Test(我之前使用的测试框架)移至Catch,并阐明了我如何做到这一点。在我们开始讨论之前,让我们回顾一下我是如何进入Googl...

2018-11-02 14:55:51 2744

原创 2.制作第一个驱动程序

驱动框架先讲解驱动框架,然后写出first_drv驱动程序,来打印一些信息 写出first_drv驱动程序需要以下几步:写出驱动程序first_drv_open、first_drv_write需要定义file_operations结构体来封装驱动函数first_drv_open、irst_drv_write对于字符设备来说,常用file_operations以下几个成员: ...

2018-10-27 22:19:53 338

翻译 理解evdev

翻译自这里理解evdev这篇文章解释了evdev协议的工作原理。阅读本文后,您应该了解evdev是什么以及如何解释evdev事件dump以了解您的设备正在做什么。该帖子主要针对必须调试设备的用户,因此我将遗漏或简化一些技术细节。我将使用evemu-record的输出作为示例,因为这是evdev的主要调试工具。什么是evdev?evdev是一种仅限Linux的通用协议,内核使用该协议将有...

2018-10-27 22:07:14 8287 1

转载 1.驱动程序概念介绍

引言u-boot的任务是启动内核,内核的任务是启动应用程序,应用程序会涉及很多文件和硬件操作(当然不会直接操作硬件),比如读写文件,点灯、获取按键值。比如对于控制led灯的用户程序与驱动程序,最简单的实现方法是:应用程序中需要打开led灯,就需要open函数,在内核中的驱动程序中也有对应的led_open函数,这个led_open函数就是用来负责初始化led的引脚功能,应用程序中要...

2018-07-21 12:43:57 989

原创 SNL编译器之词法分析器

这是什么这是吉林大学编译原理的课程设计。想必来到这里的看客手头都应该有那本实验书,故背景就不多讲了。词法分析如何做一个语言规定好了该语言中都有那些词素,诸如保留字、特殊符号(+,-之流)等。在我们做词法分析的时候应该提前了解这些,所幸实验书中给的信息已经十分详尽。 在书中有一个词法分析的状态机,列出了SNL语言所能识别的所有词素。故重点在于实现该状态机。状态机的实现书中给了两...

2018-05-23 20:19:25 4558 2

原创 Cannot create children for a parent that is in a different thread Qt线程问题

起因在做一个编译器词法分析的图形展示时用到了多线程,继承了QThread并重写了run方法。 基本上就是下面这个意思:class Thread : public QThread {void run() {QObject *obj = new QObject(this);//这里出现了问题}};运行时提示Cannot create children for a parent...

2018-05-12 21:35:16 11500 2

转载 解析Qt内省机制

何为内省所谓内省是指面向对象语言的一种在运行期间查询对象信息的能力, 比如如果该语具有运行期间检查对象型别的能力,那么我们称它是型别内省(type intropection)的,型别内省可以用来实施多态。C++的内省比较有限,它仅支持上面所说的型别内省, C++的型别内省是通过运行时类型识别(RTTI)(Run-Time Type Information)中的typeid 以及dynami...

2018-05-12 18:59:12 854

转载 浅议Qt的事件处理机制 二

我们在上文中,介绍了Qt框架的事件处理机制:事件的产生、分发、接受和处理,并以视窗系统鼠标点击QWidget为例,对代码进行了剖析,向大家分析了Qt框架如何通过Event Loop处理进入处理消息队列循环,如何一步一步委派给平台相关的函数获取、打包用户输入事件交给视窗系统处理,函数调用栈如下:main(int, char **)QApplication::exec()QCoreAppl...

2018-05-12 17:40:11 500

转载 浅议Qt的事件处理机制 一

深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集。 大家熟知Signals/Slots在多线程的实现也依赖于Qt的事件处理机制。在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. 接下来依次谈谈Qt中有谁来产生、分发、接受和处理事件:谁来产生事件:最容易想到的是我们的输入设备,比如键盘、鼠标产生的keyPressE...

2018-05-12 17:31:11 571 1

原创 RT-Thread教程一之Linux下开发环境及QEMU配置

# 简介 这两个月要开始RT-Thread了,在此记录一下过程,也好给后人指一条路。 既然都已经到这里来了也就不用我介绍RT-Thread了吧;)。各种工具安装编译器、调试器我选择了直接在系统仓库里面下载sudo apt install gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi scon...

2018-04-18 09:01:43 5632 1

翻译 图解Redux

简介有一点比Flux更令人困惑的是Flux和Redux之间的差异,而Redux正是Flux的灵感来源。 在本文将解释这两者之间的差异。如果您还没有阅读关于Flux的最新文章,那么您应该先做阅读此篇文章图解Flux。为什么要改变FluxRedux解决与Flux相同的问题,但另外还有一些问题。就像Flux一样,Redux使应用程序的state更改变得更加可预测。 如果你...

2018-04-14 21:34:00 644

翻译 图解Flux

简介在如今的 Web 开发领域,Flux 最流行也最容易被大家所误解的技术之一。本教程打算以一种大家都能理解方式图解 Flux。问题首先必须先说明一下 Flux 到底解决什么问题。Flux 是一种应用处理的数据的模式。虽然 Flux 和 React 一同在 Facebook 成长起来的,很多人把它们合到一起来理解,但你仍然可以单独使用它们。它们是被设计用来解决一些 ...

2018-04-14 15:25:52 836

原创 线程和QObjects

简介QThread继承QObject。 它发出信号以指示线程已启动或完成执行,并提供几个slots。 更有趣的是,QObject可以用于多线程,发射信号以调用其他线程中的槽,并将event发布到其他线程中的对象。 这是可能的,因为每个线程都有自己的事件循环。QObject可重入性QObject是可重入的。它的大部分非GUI子类(如QTimer,QTcpSocket,QUdpS...

2018-04-14 10:26:58 307

原创 Qt Concurrent

简介QtConcurrent命名空间提供了高级API,可以在不使用低级别线程原语(如互斥锁,读写锁,等待条件或信号量)的情况下编写多线程程序。 使用QtConcurrent编写的程序会根据可用的处理器内核数自动调整使用的线程数。 这意味着今后编写的应用程序将在未来部署到多核系统时可以充分利用更多的处理器内核。依赖如要使用QtConcurrent,需要在Qt工程中加入conc...

2018-04-14 09:02:42 1050

原创 Qt中的多线程技术详解

Qt中的多线程技术Qt提供了许多用于处理线程的类和函数。 以下是Qt程序员可以用来实现多线程应用程序的四种不同方法。QThread:带有可选事件循环的低级APIQThread是Qt中所有线程控制的基础。 每个QThread实例表示并控制一个线程。 QThread可以直接实例化或派生子类。 实例化QThread提供了一个并行事件循环,允许在辅助线程中触发QObject的slot...

2018-04-13 22:33:31 1460

原创 QML中对单例使用信号导致“Non-existent attached object”的解决方法

项目中,对一个单例(比如叫做mySingleton)使用信号机制(比如信号onClicked)时,mySingleton.onClicked:{...}遇到错误,提示“Non-existent attached object”。 用该如下使用Connections{ target:mySingleton onClicked:{ ... }}...

2018-04-12 22:48:23 2761 1

原创 设备驱动程序简介

什么是设备驱动程序设备驱动程序,同为程序,与其他程序有何不同呢?简单点的说设备器驱动程序即满足某个标准化的、定义良好的内部编程接口 ,以此将用户的操作,通过这个内部编程接口 映射到实际硬件设备上的特有操作。设备驱动程序的作用一种角度的解释从一种角度上讲,设备驱动程序的作用在于提供机制,而非提供策略。 所谓机制,可以理解为“需要提供什么功能”。而所谓策略,可以理解为“如...

2018-04-04 22:19:06 2195

翻译 C++ I/O相关技巧与问题

当使用C ++ I / O时,有三个头文件要包含在内#include<iostream> 只要使用C ++ I / O,就包括此文件 #include<iomanip> 当使用控制符、操纵符(manipulator)时,该文件必须包含。 #include<fstream> 每次使用文件时都要包含这个文件。默认情况下,前导空格(回车符,制...

2018-04-02 18:00:16 161

原创 qDebug()浮点输出问题

概要在使用Qt时,通过qDebug()输出浮点数时有机会遇到一个细微错误。 问题在于显示的可能并不完整。 std::cout有相同的问题。情况可能发生在以下情况:您有一个QString对象,它包含一定数量的8564.26495574,我们使用toDouble()方法将其转换为浮点数,然后用输出qDebug()检查结果,但是运气不好,输出不正确。QString str("8564...

2018-03-31 15:36:13 8220

翻译 var QML基本类型

基本介绍var类型是一个可以引用任何数据类型的通用属性类型。它相当于一个常规的JavaScript变量。 例如,var属性可以存储数字,字符串,对象,数组和函数:Item { property var aNumber: 100 property var aBool: false property var aString: "Hello world!" p...

2018-03-30 21:33:34 6568

原创 QML组件单例模式

总的来说,需要完成那些事呢?首先,您需要在QML脚本中使用pragma Singleton关键字,然后您需要将该组件注册为单例,最后您需要将它导入到需要使用他的其它QML文件中。第一步:将一个QML组件声明为单例假设以下使我们将要进行单例的文件//MyStyleObject.qmlimport QtQuick 2.0 Item { rea...

2018-03-20 20:38:33 4532 2

翻译 如何使用Qt-QML与V-Player来获取REST服务:天气服务示例

原文链接REST与RESTful web services是从网络获取数据的最常用的方法。 Qt和V-Player提供了简单的方法来通过REST来获取数据。 这篇文章将告诉你创建App与连接到REST服务的重要步骤。另外,也将会提供一些有用的代码。Spoiler:V-Player简单的REST例子在我们进入到创建整个示例App的细节之前,让我们先看一个小型App的代码。 函数#g...

2018-03-13 15:01:16 1338

原创 Qt事件处理,事件循环

Qt事件处理的基本方法

2017-10-30 14:45:34 1539

空空如也

空空如也

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

TA关注的人

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