- 博客(13)
- 收藏
- 关注
原创 Qt QHeaderView 排序
在使用tableview中有时候会需要列信息按一定的顺序进行排序,如按文件按照名称、修改日期、类型、大小进行排序。而Qt中则存在着可以通过点击表头来对列表进行排序的方法:首先,先创建一个简单的tableview表格:void CHeaderWidget::propertyModel(){ m_model->setColumnCount(2);//设置2列 m_model->setHeaderData(0, Qt::Horizontal, QString::fromLoca
2020-09-03 08:31:53
631
原创 Modbus的简单说明
Modbus是工业上的一种常见的通讯协议,其中包括有Modbus-RTU、Modbus-ASCII、Modbus-TCP。而Modbus-RTU相对另外两种更常见也更容易实现。我们先从Modbus的报文中进行观察:01 03 14 00 00 01 9E 9B依次来看:其中01指的是从机地址、03指的是功能码、14指的是起始地址高位、00是起始地址低位、00是指数据总位数的高位、01指的是数据总位数的低位、9E 9B指的是CRC校验。其意思大致可看成是:将数据0x0001写入01号从机的0x1400
2020-08-28 17:44:44
1780
原创 Qt 属性系统简单说明
简述Qt自身包含有一个属性系统,可以通过继承QObject的类中去使用Q_PROPERTY()宏、并设置需要绑定的属性与其对应的值来实现一个属性系统。而Q_PROPERTY()宏中可以声明的内容如下:Q_PROPERTY(type name(READ getFunction [WRITE setFunction] |MEMBER memberName [(READ getFunction | WRITE setFunction)])[RESET resetFunction][NOTIFY no
2020-08-19 16:55:09
403
原创 Qt 按钮样式
样式类型一个按钮可以通过添加相应的样式即(btn -> setStyleSheet)实现按钮的美化。而按钮的样式可分为如下所示:"background-color:rgba(100,225,100,30); 背景色,rgba分别为红绿蓝色以及透明度“QPushButton{”“background-color:rgba(100,225,100,30);”//背景色(也可以设置图片)“border-style:outset;” //边框样式(inset/
2020-08-13 17:49:00
5465
原创 Qt QGroupBox简单说明
QGroupBox的说明QGroupBox是一个带有标题的组合框,其标题处于组合框的线上。接下来大致说明如何将一些控件加入至QGroupBox框中显示:首先需要先定义组合框的指针函数 QGroupBox *createGroupBox;在此函数中,则可以创建需要的布局以显示需要的控件,具体如下:先在头文件定义: //QGroupBox类型 QGroupBox *creatGroup1(); QGroupBox *creatGroup2();在构造函数中创建一个QGridB
2020-08-07 17:32:03
8202
1
原创 Qt 数据库QSQLITE的使用
在Qt中支持"QSQLITE", “QMYSQL”, “QMYSQL3”, “QODBC”, “QODBC3”, “QPSQL”, "QPSQL7"这若干种数据库的驱动。而QSQLITE是属于Qt内部已经建立好的数据库,可应用于嵌入式方向的一个较为轻型的文件型数据库。接下来则使用此数据库大致描述其相关的应用:首先,想要使用数据库则需要在.pro文件中添加sql即如下所示:添加完成后便可以加入头文件:#include <QSqlDatabase>#include <QSqlQue
2020-07-31 18:05:25
4455
原创 Qt 制作一个界面
使用Qt制作一个界面在界面中添加相应的控件,绘制所需的图形,并从数据库中获取相应数据在图中绘制,具体界面如下:大致流程:由上图来分析出此界面所经历的流程:首先我是将整个界面分为三个部分,分别为顶部的标题Label;中间绘制的柱状图以及坐标轴;底部的提示框以及按钮、时间等控件。首先在主界面利用网格布局QGridLayout设置五个QGroupBox,两个按钮:呼叫和返回,以及可编辑的时间QDateTimeEdit以及一个Qlabel放置日期。并在绘图事件中绘制按钮的边框以及产出次数和异常次数的值。代
2020-07-29 18:13:26
3325
1
原创 多线程绘图
在线程中绘图可分为两个步骤,即划分子线程以及在线程中绘图。创建子线程的过程如下:首先先建立一个子线程的类,再在主窗口类中定义子线程对象。使用moveToThread方法移动到子线程而不用run进入。 在调用start()开启线程后就可以在子线程中绘制想要的图形创建一个自定义线程类(可以用信号与槽的方式进入线程以及从子线程中输出相应的信息给主线程)。本次程序主要是完成在窗口点击鼠标从而在点击的点中显示在子线程所绘制的图片。Widget::Widget(QWidget *parent) : QW
2020-07-24 23:28:43
2371
原创 Qt 使用TCP传输文件
传输流程利用Sokcet通信中TCP进行文件的传输,可以分为两个模块:分别是服务端以及客户端。大致流程则是在服务端中发送相应的文件,客户端则负责接收。具体如下:先通过通信将服务端与客户端连接,在客户端中通过相应的ip地址以及设定的端口port去获取与服务端的连接。而在服务端监听到相应的客户端时,则可成功连接,完成通信。此时则可以通过相应路径选择相应的文件进行发送。而客户端可以通过接收到的文件信息,将之分为文件名以及文件大小等相应信息去创建一个相同的文件,从而实现文件的传输。代码说明在服务端中主要
2020-07-21 13:51:01
514
1
原创 moveToThread简单使用方法
Qt的多线程实现可分为两种实现方法,其一为继承QThread,并重写其run函数以实现多线程,而另一种则是本文将介绍的moveToThread,即将继承QObject中的类通过moveToThread函数来转移至一个Thread中以实现多线程。...
2020-07-15 17:15:30
4908
2
原创 QBoxLayout、QGridLayout、QFormLayout
QBoxLayoutQBoxLayout是一种排列的控件,包括有继承它的QHBoxLayout以及QVBoxLayout。QHBoxLayout为水平排列控件而QVBoxLayout则为垂直排列控件。二者在使用方法上几乎相同,仅仅在布局显示上有所区别。以下则由程序来说明两者的使用方法: QPushButton *pbtn1 = new QPushButton(this); QPushButton *pbtn2 = new QPushButton(this); QPushButt
2020-07-13 16:59:28
271
原创 Qt中ItemDataRole内部角色说明
ItemDataRoleItemDataRole是通过其内部的各个Role对每一项都作出相应的Role操作从而更完美地将想要的数据以更完美的形式呈现出来。model中的角色role有多个,但是常用的就几个。ItemDataRole包含的Role:DisplayRole :主要用于以文本的形式显示数据。EditRole:可用于文本数据的编辑。DecorationRole:可以将数据通过图标的方式呈现出来。ToolTipRole :实现当鼠标处于选中的数据时,显示出数据的相关提示。StatusT
2020-07-10 19:18:48
8246
原创 Qt中QMap的简单说明及使用
QMap的说明QMap属于Qt中的一种类型,使用者可以存储一对值(Key,value),以此便可通过Key来找到与其对应的值value。我觉得说简单点其实就是将值value与Key相互关联、一一对应。两个值可以是相同类型或者是不同类型,通过Map来将二者联系。一些简单的使用方法首先先将Key和value值添加进去QMap<QString,int> m_Map;//将value中的值插入至Key中的方法如下所示:m_Map[“KeyType1”]=658;m_Map[“KeyTy
2020-07-09 14:29:36
4041
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人