qstring

QT基础知识-通信(第四天)

一笑奈何 提交于 2020-02-27 18:22:38
1,Linux中Tcp通信流程简介 服务器端:创建socket(监听套接字),绑定bind,服务器端监听listen,接受accept(通信套接字)。 客户端:创建socket(通信套接字),连接connect(客户端主动和服务器链接) 2,Qt中Tcp的通信机制 Qt中服务器端也有两个套接字,其中一个类似QTcpServer(监听套接字),然后Linux中的bind和listen合在了一起为listen()函数,另一个通信套接字是QTcpSocket(通信套接字)。连接的时候有一个connectToHost(),但是通信的时候是一种信号和槽的连接,当主动连接的时候,成功后,服务器端会收到一个newConnection()信号,然后就会触发槽函数,参函数就会取出建立好连接的套接字 QTcpSocket()。 如果成功和对方建立好连接,通信套接字会自动触发connected();如果对方主动断开连接,通信套接字会自动触发disconnected()信号。发送数据的时候,如果发送成功,对方的通信套接字会触发readyRead()信号,需要在对应的槽函数做接收处理。 3,Qt中的Tcp客户端和服务端开发示例 效果图: 服务器代码: #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) :

QT基础知识-画图和文件(第三天)

给你一囗甜甜゛ 提交于 2020-02-25 00:38:20
1, 如果在窗口绘图,必须放在绘图时间里实现。 窗口需要重新绘图的时候,绘图事件内部自动调用。 创建画家对象语法:QPainter p(Device *); 使用对象p来调用各种画图的方法。 QT画图代码如下: void Widget::paintEvent(QPaintEvent *){ QPainter p(this); //绘图操作 p.drawxxx(); //画背景图 p.drawPixmap(0, 0, this->width(), this->height(), QPixmap("../123.jpg")); //定义画笔 QPen pen; pen.setWidth(5);//设置线宽 pen.setColor(Qt::red);//也可以使用RGB进行设置,QColor(14, 15, 16) pen.setStyle(Qt::DashLine);//设置风格 //把画笔交给画家 p.setPen(pen); //创建画刷对象,用于填充封闭区域 QBrush brush; brush.setColor(Qt::blue); brush.setStyle(Qt::Dense1Pattern);//设计样式 p.setBrush(brush); //画直线 drawRect()画矩形 p.drawLine(50, 50, 150, 50);//前面两个是起点坐标

qt串口通信(vs版本)

走远了吗. 提交于 2020-02-21 07:17:19
最近在搞串口通信,记录一下: 配置: 1.首先将Qt5SerialPort.lib的库引入,其位置在qt的安装路径下的lib中可以找到 2.加入头文件 #include <QtSerialPort/qserialport.h> #include <QtSerialPort/qserialportinfo.h> 3.打开串口 //打开串口 void demo::OpenCom() { serialIo->setPortName(“COM3”); //串口名 if (serialIo->open(QIODevice::ReadWrite)) { qint32 baudrate = 9600; serialIo->setBaudRate(baudrate);//波特率 serialIo->setDataBits(QSerialPort::Data8); //数据位 serialIo->setParity(QSerialPort::NoParity); //校验位 serialIo->setStopBits(QSerialPort::OneStop);//停止位 serialIo->setFlowControl(QSerialPort::NoFlowControl); } } 4.串口发送数据通信 //发送接收数据 void demo::SendData() { QString

QTreeView将选中的树形结构复制粘贴

霸气de小男生 提交于 2020-02-21 04:27:47
首先组织QTreeView中每一项的数据结构,将要显示在QTreeView中的每一项的类定义为 class TreeItem : public QObject { Q_OBJECT public: TreeItem(const QList<QVariant> &data, QoSTreeItem *parent=0, QObject *parentObj = 0); ~QoSTreeItem(); void appendChild(QoSTreeItem *child); QoSTreeItem *child(int row); int childCount() const; int columnCount() const; QVariant data(int column) const; int row() const; QoSTreeItem *parent(); bool isChecked(); void setCheckState(bool state); void setColumnData(int column, const QVariant &data); public: bool m_checked; private: TreeItem *parentItem; // 父节点 QList<TreeItem *> childItems; // 管理孩子节点的容器

Qt高级编码约定

谁说胖子不能爱 提交于 2020-02-18 22:21:05
Qt高级编码约定 参考 https://wiki.qt.io/Coding_Conventions 来源 https://zhuanlan.zhihu.com/p/97723847 发布于 2019-12-16 这是我们在编写Qt代码时使用的高级编码约定的概述。有关Qt代码规范,请参见 Qt代码风格 一文。对于QML,请参阅 QML代码规范 一文。 C++特性 不要使用异常。 不要使用rtti(运行时类型信息:即typeinfo结构,dynamic_cast或typeid运算符,包括引发异常)。 谨慎明智地使用模板,不仅仅是因为可以使用。 提示:使用编译自动测试可以查看测试中的所有编译器是否支持C++功能。 Qt源代码中的约定 所有代码仅是ascii(仅7位字符,如果不确定,请运行 man ascii ). 因为我们内部的语言环境太多,而且UTF-8和latin1系统的组合不健康。通常,您甚至不知道通过单击您喜欢的编辑器中的"保存"就可以破坏字符超过127个字符的范围。 对于字符串:使用 \nnn (其中nnn是要在其中输入字符串的任何字符编码的八进制表示形式)或 \xnn (其中nn是十六进制)。示例: QString s = QString::fromUtf8("13\005"); 对于文档中的变音符号或其他非ASCII字符,请使用qdoc的命令或使用相关的宏。例如 \uuml

QVariantMap 和 QVariant

倾然丶 夕夏残阳落幕 提交于 2020-02-16 03:02:50
typedef QVariantMap Synonym for(同义词) QMap < QString , QVariant >. QVariant 类型的放入和取出必须是相对应的,你放入一个int就必须按int取出,不能用toString(), Qt不会帮你自动转换。 数据核心无非就是一个 union,和一个标记类型的type:传递的是整数 123,那么它union存储整数123,同时type标志Int;如果传递字符串,union存储字符串的指针,同时type标志QString 。 QVariant 属于 Qt 的Core模块,属于Qt的底层核心之一,ActiveQt、QtScript、QtDeclarative等都严重依赖于QVariant。   QVariant 可以保存很多Qt的数据类型,包括QBrush、QColor、QCursor、QDateTime、QFont、QKeySequence、 QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize和QString,并且还有C++基本类型,如 int、float等。QVariant还能保存很多集合类型,如QMap<QSTRING, QVariant>, QStringList和QList。item view classes,数据库模块和QSettings都大量使用了QVariant类

Qt文件QFile 和文件夹QDir

匆匆过客 提交于 2020-02-15 05:49:29
一、QFileInfo的简单用法 参考链接: http://blog.sina.com.cn/s/blog_3e62c50d01013xd4.html QFileInfo的几个构造函数: QFileInfo ( ) QFileInfo ( const QString & file ) QFileInfo ( const QFile & file ) QFileInfo ( const QDir & dir, const QString & file ) QFileInfo ( const QFileInfo & fileinfo ) 一般用法: QFileInfo fileInfo(path); //or QFileInfo fileInfo; fileInfo.setFile(path); bool exists(); 判断文件是否存在,若存在返回true。 qint64 size(); 获取文件大小,返回bytes。 //路径和文件名相关: QString path(); 返回文件路径,不包含文件名。 QString filePath(); 返回文件路径,包含文件名。 QString fileName(); 返回文件名称。 // 例子如下 //文件名 QString file_name = fileinfo.fileName(); qDebug()<<file_name<

QT打开和保存文件对话框

本小妞迷上赌 提交于 2020-02-15 03:33:34
使用QFileDialog可以调用当前系统的文件对话框 包含头文件: #include <QFileDialog> (1)文件打开对话框 QString getOpenFileName ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 ) 第一个参数parent,用于指定父组件。注意,很多Qt组件的构造函数都会有这么一个parent参数,并提供一个默认值0; 第二个参数caption,是对话框的标题; 第三个参数dir,是对话框显示时默认打开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比如"C:\\"等; 第四个参数filter,是对话框的后缀名过滤器; 多个文件使用空格分隔:比如我们使用"Image Files(*.jpg *.png)"就让它只能显示后缀名是jpg或者png的文件。 多个过滤使用两个分号分隔:如果需要使用多个过滤器,使用";;"分割,比如"JPEG Files(*.jpg)

[起源]信号与槽

爱⌒轻易说出口 提交于 2020-02-15 00:35:34
学习更多嵌入式Linux、Qt以及嵌入式单片机知识关注公众号“爱玩嵌入式”: “信号与槽是Qt的一大创新,关联信号和槽可以完成定义某一事件的触发与事件触发后产生的效果等一系列动作。” 目录 一、信号 二、槽 三、连接 一、信号 信号 的作用是当事件符合条件时,该信号被发射。在Qt中我们常用到的就是按钮点击事件的触发,他所发出的信号就是clicked(),还有就是lineedit中字符串改变所触发的信号。关于一些控件的信号我这里就不再赘述了,本文主要讲我们自己去定义一些信号怎么去触发。 我们声明信号时只需要在头文件内去声明,信号函数不可以有返回值,而信号的定义由moc自动生成,所以我们并不需要去实例化信号。常用的信号声明基本形式是 signals: void xxxxx();//不带参数发送 void xxxxx(QString a,int b,...);//带参数发送 我们在头文件内定义好之后,就在我们想要他被触发的位置这样写 void nn() { int a = 10; emit xxxxx();//发射信号 } 这样,我们的信号就发射完成了。 二、槽 槽 是当信号被触发后,程序要回调的函数。他的外观就是c++的函数,对于他的定义和其他的c++函数是一样的,但是在头文件中的声明要在slots下面,有三种形式private slots、protected slots、public

Qt串口通信,QSerialPort的使用

本秂侑毒 提交于 2020-02-13 15:54:11
前言 Qt写上位机时,串口通信是个常用功能,在Qt4的时候有第三方模块QextSerialPort,到了Qt5.1官方提供了QSerialPort模块。 目录 前言 获取串口信息:QSerialPortInfo 串口IO操作:QSerialPort 实例操作 补充:16进制文本(如“0A 13 EF”)转16进制数据(如0x0A 0x13 0xEF) 使用该模块需要在pro文件中添加: QT += serialport 主要使用两个类:QSerialPort和QSerialPortInfo 获取串口信息:QSerialPortInfo 获取串口名列表 QStringList slist; foreach ( const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { //检测是否可用 f(!info.isBusy()) slist<<info.portName(); } 除了串口名还能获取其他的相关信息,可以看文档,或者该链接 https://blog.csdn.net/mcu_tian/article/details/43527385 串口IO操作:QSerialPort 串口IO的主要操作有参数设置/开/关/读/写等 //[1]串口设置 QSerialPort *serialIo= new