- 博客(43)
- 收藏
- 关注
原创 QML之Canvas
Canvas的输出可以保存为图像文件或序列化为URL. 在Canvas 上进行渲染是通过Context2D对象(getContext(“2d”)来实现的,通常是在绘制信号(painted)触发式完成的。//填充,只有当上面的路径构成闭合时才会填充,用fillStyle的样式来填充。//在指定的偏移添加渐变的颜色。
2025-05-27 22:33:44
66
原创 QT闲记-状态栏,模态对话框,非模态对话框
跟菜单栏一样,如果是继承于QMainWindow类,那么可以获取窗口的状态栏,否则就要创建一个状态栏。通过statusBar()获取窗口的状态栏。在Qt 坏境中,我们根据是否阻塞和非阻塞对话框把它分为模态对话框和非模态对话框。通常添加Label 来显示相关信息,当然也可以添加其他的组件。一、setModal(true);模态设置为true, 非模态设置为false.同工具栏,状态栏一样可以通过setStyleSheet()来设置状态栏的信息。模态调用 exec(),非模态调用show().
2025-02-23 14:35:17
165
原创 QT闲记-工具栏
通常通过QMainWindow 提供的addToolBar()来创建,它跟菜单栏一样,如果需要工具栏,一般情况下,我们设置这个类的基类为QMainWindow。工具栏通常用来放置常用的操作按钮,如QPushButton,QAction等。可以放置在顶部,底部,左侧,右侧,并且支持拖曳,浮动。4、通过信号槽的方式来响应动作或按钮。2、添加按钮到工具栏。3、添加动作到工具栏。
2025-02-22 22:06:09
319
原创 QT随记-菜单栏
菜单项是菜单中的具体操作项,通常用QAction 表示。可以设置菜单的文本: setText();可以设置菜单的图标setIcon;可以设置菜单的快捷键setShortCut等。菜单栏通常是通过QMainWindow 提供的menuBar()方法来实现,如果是QWidget,则需要手动创建QmenuBar并添加到布局中。通过addMenu()来把菜单添加到菜单栏中,同是也可以通过addMenu() 在菜单下添加子菜单。4、对菜单栏,菜单和菜单项都可以通过样式来设置。2、菜单,子菜单 (QMenu)
2025-02-22 21:38:37
259
原创 QRadioButton,QCheckBox
autoExclusive: 在一个布局或一个容器组件内的同类按钮是否互斥。如果是互斥,当其中的一个按钮的checked 属性被设置为true 时,其他按钮的checked 属性被自动设置为false。void toggled(bool checked) //按钮的checked 属性变化时。void clicked(bool checked = false) // 点击按钮时。void pressed() //按下space 键或鼠标左键时。QGroupBox: 用来管理一组相互关联的选框按钮。
2024-08-07 17:27:45
478
原创 qt 国际化语言,英文和中文切换
在ubuntu 的 qt creator 中,选择 File -->open file with-->选择需要翻译的 ts 文件 --->open-->在弹出框中选择 Qt linguist -->ok ,然后开始翻译。5、把 各个 ts 文件生成对应的 .qm 文件。在ubuntu 的qt creator 中 ,选择 Tools->External->linguist->lupdate, 会自动在项目的目录下生成对应的 lang_en.ts 和 lang_zn.ts文件。
2024-07-18 22:31:28
640
原创 QTreeWidget
2、connect 是Qt中的一个重要函数,用于在Python版本的Qt应用中建立连接(Connection),使得当某个信号(Signal)发出时,会自动调用相应的槽(Slot)。这是事件驱动编程的核心,允许组件之间的通信,比如按钮点击触发回调函数处理。1、QTreeWidgetItem 是 Qt 开发框架中的一个重要组件,它主要用于表示树形视图中的节点。在 QTreeWidget 这样的控件中,每个节点都是 QTreeWidgetItem 的实例,可以包含文本、图标以及其他数据。
2024-07-16 22:20:23
1333
原创 Linux C 中 multiple definition of ‘xxx‘
(2)在项目中,对于依赖的源文件夹中的所有.c文件都会被编译,如果其中一个.c文件被另外一个.c文件include,就像下面的代码一样,那么就会导致被包含的那个.c文件中定义的变量和函数被两次编译,从而导致重复定义。尽量不要使用.c文件包含.c文件,而使用头文件声明的方式调用另一个.c文件中的函数或者变量,否则容易忘记,导致重复定义。为了防止上述问题的出现,我们可以把需要用在多个源文件中的变量或函数集合到一个统一的文件中,然后在头文件中进行声明,在其他地方都用包含头文件的方式进行处理。
2023-12-29 16:54:30
1771
原创 Q_PROPERTY 使用QList 来进行数据传递
在使用C++与QML进行数据传递的时候,我们会经常用到Q_PROPERTY。本章主要从QList基础、Q_PROPERTY 中使用QList、Q_PROPERTY 中使用QList 完整示例三个方面来讲述。三、Q_PROPERTY 中使用QList 完整示例。1、创建QList 对象。二、Q_PROPERTY 中使用QList。1、在main函数中向QML注册。一、QList 基础。
2023-12-22 11:28:22
1012
1
原创 Linux 下C语言中调用C++动态库完整流程
2、编译C++文件生成动态库。本文只是一个示例,如果是项目,需要更换为Makefile 或CMAKE来生成动态库。3、在C语言中直接调用get_parameter_result,链接库文件跟链接C动态库文件一致。1、C++中要供给C使用的函数必须经过如下处理。//这里放置C语言需要调用的函数。
2023-12-06 16:23:28
731
原创 RK3588 can 编程
Can使用二根线来连接各个单元,CAN_H, CAN_L.Can总线通过二根线的电位差来得到总线电平。显性电平表示逻辑0,一般CAN_H 为3.5V,CAN_L 为1.5V,电位差为2V.隐性电平表示逻辑1,一般CAN_H 和CAN_L为2.5V。CAN定义了5种类型的帧,分别是数据帧,遥控帧,错误帧,过载帧,间隔帧。以前也做过Can编程,时间久了,就忘记了,因项目的需要,再次做Can编程的时候,竟然发现很多东西都忘记了,于是把怎么进行can编程记录下来,用来备忘。一、Can总线的一些基本特性。
2023-10-07 13:33:30
1037
原创 RK3588外围设备调试和应用总览
大概分为以下几个内容,can总线从应用到驱动,SPI从应用到驱动,I2C从应用到驱动,uart从应用到驱动,AD采样从应用到驱动等,另外可能也会附加一些项目开发过程中遇到的问题。由于平时工作比较忙,可能本专栏更新不是特别快,在订阅前,请大家多思考!如果订阅了,需要已更新的专栏的代码,可以私信获取。RK3588项目基本完成,后面打算抽空把相关的外围设备调试和应用使用进行一些总结,作为一个项目备忘。
2023-08-04 13:25:18
328
原创 Linux TCP 服务器
本章主要介绍的是一个服务器跟一个客服端的连接,如果需要一个服务器连接多个客服端,需要自行通过 select 进行处理,本章不进行处理。
2023-07-14 10:43:13
125
原创 QML 动态创建和删除多个组件
最近要做一个时序工具,需要一个元件对应一个可设定的时序,纠结了好久,不知道怎么处理好。最终确定以如下方式进行开发。如有更加好的方式,请留言。 首先为QML 的ListView 写一个C++的模型,当然也可以直接用 ListView 的模型,由于这些数据都需要处理,最后会保存到xml 文件中,习惯就写C++ 方式了。 第二个,为每个元件分配一个 ListView. 在 ListView的 delegate 中根据每个元素的参数,动态创建组件。在这里,刚开始...
2021-12-17 16:16:21
1047
原创 QT SQLITE
最近在学习QT,然后觉得是否应该把数据库也搞一下,于是便进行了一些资料查询和简单的代码编写,下面记录一下一个完整可行的数据库的基本操作。 一、创建数据库并建立连接。 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLIT"); db.setHostName("mystudent"); db.setDatabaseName("flightdb"); if(!...
2021-11-18 14:36:44
695
原创 QML MV
最近在使用QML 过程中需要由C++ 的逻辑层上传数据给QML 展示,并且这个数据是不断更新的,所以我使用C++ 的mode 方式,然后在QML 中调用。当然这个方式肯定是没有问题的。闲暇之余,想了下,如果我不采用C++的方式实现 mode, 而是采用QML 中已有的 ListModel 怎么实现呢?大概分为二种,一种为需要不听刷新的界面,一种为从逻辑层获取数据后,不需要再刷新。 首先第一种,从逻辑层获取数据后,不需要再刷新,这个比较简单,就是在ListModel 中,先...
2021-10-25 17:16:54
232
原创 QT crator 创建项目
使用Qt Crator 创建可以分为二种,一种为通过qtcrator 创建虚拟文件夹,当我们使用qt crator 打开时,我们看到的是一个分文件夹的项目,但是在我们实际的路劲下是没有这个文件夹的。为了区分不同的模块或者是不同的功能,我们可以使用手动来建立。首先,在生成的 Quick 的项目的目录下建立多个文件夹。如test1,test2,test. 第二、在每个文件夹下建立相应的 pri文件。 第三、在 pro 文件中包含每个 pri 文件。第四,运行一下,就可以看到实际的效果了。...
2021-10-11 17:38:25
311
原创 linux 下动态库使用
最近在使用别人提供的动态库,在用的时候还不是一下就能OK的,有些地方还是需要注意。1、当我们在c++ 中调用C 的动态库,我们会经常出现 undefined reference to fun, 就是定义在动态库中的函数我们找不到,但是我们已经包含了相关的头文件了,为啥呢?这是因为我们需要把这个头文件放入到 extern "c"{ #include "mytestso.h"},这样我们就解决了这个问题。2、warning: XXX.so, needed by /opt/XXX/XXX/XXX.so..
2021-09-18 10:15:31
414
原创 JSON 的简单使用
最近项目需要弄一个QT的程序,以前没干过,都是现学现用。今天我们需要QT的QML和QT的C++ 进行消息的交互。所以对QJSON有所了解。其实对我们这个项目来讲JSON 只需要二个很基本的功能能,第一个构建JSON对象处理,第二,接收传递过来的JSON进行解析。第一,JSON对象的打包。QJsonObject json;json.insert("Name","dream");json.insert("Age",100);第二,JSON的解析。QJsonValue valu...
2021-05-12 18:37:56
159
原创 2020-12-05
设计模式之命令模式命令模式可以把“动作的请求者”从“动作的执行者”对象中解耦出来。动作的请求者和执行者通过命令对象进行沟通。命令对象封装了接受者和一组动作。综上: 。下面我们以遥控器来介绍命令模式一:遥控器需要控制的各个器件。(如,冰箱,电灯,空调,电视等)【动作的执行者,如电灯的开关等】执行遥控请求的动作。二:遥...
2020-12-05 17:17:01
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人