QT基础练习-程序员宅基地

技术标签: qt  

槽函数

 connect(ui>logoBt,SIGNAL(clicked()),this,SLOT(logoBt_clicked_slots()));
 ​
 connect(A,SIGNAL(B),C,SLOT(D));
 ​
 当对象A发出B信号时候,就会触发对象C的槽函数D

qt基础

做一个简单的qt界面

如何创建一个QT工程?

步骤一:

步骤二:

不要有中文路径

步骤三:

工程文件分析:

点击forms,然后双击ui文件,就可以进入ui编辑器。

ui编辑器面板介绍:

做一个简单的QQ登录界面

我们用到组件

放图片,放文本,放gif图的组件就是qlabel。

放账号和密码的对话框我们用的组件是qlinedit。

按钮我们使用的组件是qpushbutton

怎么关联信号和槽

自动关联:在ui界面里,右键点击对应的控件->转到槽

第一个部分: 自动关联会给我们的工程添加以下内容:

槽函数只能声明到private slots或者public slots 下面。(QT特有)

第二个部分:

手动关联:使用connect这个函数。

 connect(ui>logoBt,SIGNAL(clicked()),this,SLOT(logoBt_clicked_slots()));
 ​
 connect(A,SIGNAL(B),C,SLOT(D));
 ​
 当对象A发出B信号时候,就会触发对象C的槽函数D

写一个界面

图标下载网址: iconfont-阿里巴巴矢量图标库

1、添加图片:

  • 右键项目名->添加新文件->Qt->Qt Resource File

  • Resourrces文件夹下右键.qrc文件->Open with>资源编辑器-添加前缀(一般默认根文件)->Crtl+S 保存文件->添加文件 注意:记得保存!!!

2、引用图片

  • 右击想要的控件->改变样式表->添加资源->border-image。可以添加多张照片。

添加新的界面:

  1. 右键项目名-》添加新文件-》Qt-》Qt 设计师类界面-》设置类名

  2. 26、28行,创建类的对象。问题:在这个类下随意创建一个对象就是我们在编辑的ui界面吗???

效果图:

qt 的三驾马车

1.qt 下的串口编程

2.qt 下的网络编程

3.qt 下操作 GPIO

想要在开发板上运行:

交叉编译Qt源码->生成Qt库->移植到开发板上

左下角这一块最好先栅格布局,然后和右边水平布局

实现串口功能

1.编辑工程文件(后缀为 .pro 的文件) 在 QT += core gui 后添加 serialport。

2.自动获取串口 使用 QSerialPortInfo:::availablePorts()获取当前串口, 该函数返回容器类Qlist<QSerialPortInfo>, 用 Qt 定义的关键字 foreach 遍历容器 Qlist 里的串口信息, 并将串口信息放到 QStringList 的类对象 serialNamePort,显示到 ui 的串口组件。

打开串口功能和属性设置 步骤一: 实例化串口类 QSerialPort 对象 serialPort, 对串口的操作就是对 serialPort 对象的操作

问题:.h文件18行,.cpp文件13行。为什么这么写2次。

注意:修改.exe文件图标使,不能偷懒直接把图片的后缀改成.ico文件,会报错

网络编程

客户端用到QTcpSocket。服务端用到QTcpServer 和 QTcpSocket。

在.h文件中:

 QTcpServer * tcpServer;
 QTcpSocket * tcpSocket;  

创建指针形式,是为了申请栈空间、因为new出来的是指针类型(弹幕)

在cpp文件中:

 tcpServer = new QTcpServer(this);
 tcpSocket = new QTcpSocket(this);

其中this可忽略。

注意:接收窗口和接收框先垂直布局,比较好看。发送窗口同理。

问题:

 void Widget::on_sendPb_clicked()
 {
     tcpsocket->write(ui->sendEdit->text().toLocal8Bit().data());//和串口实验类似,转换成char*类型?
 }

实现效果:

注意:

  • 服务器和客户端的端口要一致

  • ipconfig显示多个ip地址时,有默认网关的那个是本机ip。

UDP通信

 udpSocket = new QUdpSocket(this);//this表示父对象被删除时,子对象也被删除。


 QByteArray array;
 //hasPendingDatagrams()返回 true 时表示至少有一个数据报在等待被读取。即没读取完时返回true
 while(udpSocket->hasPendingDatagrams()){
 //获取数据
 array.resize(udpSocket->pendingDatagramSize());//将数组大小调整为跟udp剩下的一样。
 udpSocket->readDatagram(array.data(),array.size());
 buf = array.data();
 ui->recvEdit->appendPlainText(buf);
 }  

时钟

 connect(&timer,SIGNAL(timeout()),this,SLOT(timeOut_Slot()));  //传个地址过去,用的内存还是刚刚定义的内存,这样可以节省空间

除显示时钟和timeout_slot()触发函数中使用time,其他地方都用定时器timer。

//每隔50ms触发一次定时器,使time时钟每次增加50ms
 ​
 void Widget::timeout_slot()
 {
     time = time.addMSecs(50);
 ​
     ui->showTime->setText(time.toString("hh:mm:ss.zzz"));
 }
 ​
 void Widget::on_openPb_clicked()
 {
     timer.start(50);//每50ms触发一次信号
 }
 ​

系统移植-构建根文件系统

因为用ULL开发板演示,所以要打包成.tar.bz2形式。

 tar -cjf rootfs.tar.bz2 bin dev etc lib linuxrc mnt proc sbin sys tmp usr var

交叉编译QT源码

交叉编译:在Ubuntu编译好,送给另外一个平台使用。要想在开发板上使用,要先交叉编译QT源码,生成QT库,再移植到开发板上使用。(以上步骤在Ubuntu中完成)

用file命令查看

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/andrew681/article/details/137836053

智能推荐

win10护眼模式突然不见了怎么办?win10护眼模式自动失效解决方法分享_win10 找不到护眼模式-程序员宅基地

文章浏览阅读279次,点赞4次,收藏4次。再次按照以下路径找到并修改注册表:`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors\Standard` 双击名为`Window`的键值,勾选十六进制编辑模式。1、在自己的电脑桌面上找到【小智护眼宝】的桌面图标,点击打开,如果没有的话,可以下载安装一个。将原本的数值数据删除,输入`202 234 206`,然后点击确定退出编辑。在右侧找到名为`Window`的键值,双击打开编辑窗口。_win10 找不到护眼模式

我差一点就中了Magniber勒索病毒-程序员宅基地

文章浏览阅读845次,点赞19次,收藏19次。我差一点就中了Magniber勒索病毒

【操作系统实验】模拟分页式存储管理中硬件的地址转换和产生缺页中断(python)_1.实验内容:模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏56次。实验五:模拟分页式存储管理中硬件的地址转换和产生缺页中断,然后分别用LRU、FIFO、改进型的CLOCK算法实现分页管理的缺页中断。要求:显示每个页面在内存中的绝对地址,页表信息、列出缺页情况等。# 实验五:模拟分页式存储管理中硬件的地址转换和产生缺页中断,然后分别用# LRU、FIFO、改进型的CLOCK算法实现分页管理的缺页中断。# 要求:显示每个页面在内存中的绝对地址,页表信息、列出缺页..._1.实验内容:模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算

Python基本数据类型之一——dictionary(字典)_字典类型的数据-程序员宅基地

文章浏览阅读523次。一、字典字典(dicrionary)是Python中另一个非常有用的内置数据类型。字典是一种映射类型,字典用'{ }'标识,它是一个无序的“键(key):值(value)”对集合。二、字典中的键和值在同一个字典中,键(key)必须是唯一的但键必须是不可变的,如字符串、数字或元组。但值则不必唯一,值可以取任何数据类型。三、字典(dictionary)与列表(list)的区别(1)字典是无序的对象集合,列表是有序的对象集合。(2)字典是通过键来存取的,列表是通过索引值存取的。_字典类型的数据

确保端点安全的 7 大 REST API 安全策略_最适合保护rest api免受未授权访问-程序员宅基地

文章浏览阅读5.2k次。随着网络威胁的发展,实施强大的API 安全策略来保护这些重要端点变得越来越重要。_最适合保护rest api免受未授权访问

科研绘图(六)散点图矩阵-程序员宅基地

文章浏览阅读1.7k次,点赞8次,收藏17次。散点图矩阵是一种显示多个变量之间关系的数据可视化工具,特别是当数据集包含三个或多个变量时,这种图表非常有用。在散点图矩阵中,每行和每列都代表数据集中的一个变量,而矩阵中的每个小图(除了对角线)都是两个变量之间的散点图。对角线上方和下方的图是散点图,显示两个变量之间的关系。对角线上的图通常是直方图或密度图,显示单个变量的分布。为了进一步美化可视化,我们在每一张图中,都绘制了线性回归的拟合图如下所示。关系识别:快速识别多个变量间的潜在关系,比如线性、非线性或没有关系。不同的颜色或形状可以代表数据中的分类变量。_散点图矩阵

随便推点

我用c++实现的模板单链表类.并用一个一元多项式进行测试._if(i!=m.length-1&&m.e[i+1].coef>0)-程序员宅基地

文章浏览阅读1.7k次。最近刚看完了严蔚敏老师的数据结构教程,看的过程并没有实践,现在准备把里面讲到的主要算法,数据结构进行一遍实践..加深理解 这个类还有一些小问题: 里面的一些成员函数设计的并不是很好,并不能完全体现出OO精神(有些操作,比如GetHead(),GetTail()等破坏了类的封装性)..并且做多项式加法运算时,两个操作数双方的指数必须按升冥次序输入..(其实也可以增加一个成员函数_if(i!=m.length-1&&m.e[i+1].coef>0)

MATLAB机器人工具箱【3】—— 动力学相关函数及用法_matlab动力学-程序员宅基地

文章浏览阅读1.1w次,点赞16次,收藏155次。MATLAB机器人工具箱【3】—— 动力学相关函数及用法1. 查看机器人动力学参数2. 逆动力学3. 正动力学4. 机器人动力学方程5. 赋予机器人动力学参数1. 查看机器人动力学参数mdl_puma560;p560.dyn;%查看puma560机械臂所有连杆的动力学参数p560.dyn(2);%查看puma560机械臂第二连杆的动力学参数p560.links(2).dyn;%查看puma560机械臂第二连杆的动力学参数2. 逆动力学已知关节速度、加速度、角加速度求出各关节所需提供的关节_matlab动力学

基于C语言的链表的创建_c语言链表的创建-程序员宅基地

文章浏览阅读4k次,点赞10次,收藏36次。基于C语言的链表的创建_c语言链表的创建

python用turtle画月亮_使用python turtle画高达-程序员宅基地

文章浏览阅读572次。今天小编就为大家分享一篇使用python turtle画高达,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧我就废话不多说了,直接上代码吧!import turtlet=turtle.Turtle()turtle.Turtle().screen.delay(0)tleft=turtle.Turtle()#第一部分t.penup()t.goto(0,0)t.pendown()t.le..._如何用编程乌龟画出月亮

小程序深度研究报告:三大维度价值涌现,精准营销、唤起转化、连接线下_小程序 app 价值实现 上线运营报告-程序员宅基地

文章浏览阅读1.5k次。从趋势上来说,微信小程序的应用价值正在三个维度上面显现:营销(精准人群分类)、唤起(转化并调起APP)、连接线下(包括场景、智能硬件)等。可以预期,随着微信进一步开放更多底层能力,三大维度的应用上,将会有更多想象空间涌现。具体的,不妨看报告吧。 来源 | QuestMobile(QuestMobile)1. 小程序的边界在哪里?■ 移动小程序可连接生活场景,且发展受微信APP内生态影响小程序通过..._小程序 app 价值实现 上线运营报告

java计算机毕业设计求职招聘网站设计与实现MyBatis+系统+LW文档+源码+调试部署_java大学生招聘求职网站的设计与实现-程序员宅基地

文章浏览阅读109次。java计算机毕业设计求职招聘网站设计与实现MyBatis+系统+LW文档+源码+调试部署。JSP基于JAVA的邮件过滤系统的设计与实现sqlserver。JSP企业客户服务与产品管理系统的设计和实现SQLServer。springboot基于Vue框架的养生系统。ssm基于Vue的去哪儿玩app的设计与实现。ssm基于JavaWeb的商铺租赁管理系统。ssm线上远程教学及自主学平台的设计与实现。_java大学生招聘求职网站的设计与实现