技术标签: qt
槽函数
connect(ui>logoBt,SIGNAL(clicked()),this,SLOT(logoBt_clicked_slots()));
connect(A,SIGNAL(B),C,SLOT(D));
当对象A发出B信号时候,就会触发对象C的槽函数D
做一个简单的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。可以添加多张照片。
添加新的界面:
右键项目名-》添加新文件-》Qt-》Qt 设计师类界面-》设置类名
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。
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
交叉编译:在Ubuntu编译好,送给另外一个平台使用。要想在开发板上使用,要先交叉编译QT源码,生成QT库,再移植到开发板上使用。(以上步骤在Ubuntu中完成)
用file命令查看
文章浏览阅读279次,点赞4次,收藏4次。再次按照以下路径找到并修改注册表:`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors\Standard` 双击名为`Window`的键值,勾选十六进制编辑模式。1、在自己的电脑桌面上找到【小智护眼宝】的桌面图标,点击打开,如果没有的话,可以下载安装一个。将原本的数值数据删除,输入`202 234 206`,然后点击确定退出编辑。在右侧找到名为`Window`的键值,双击打开编辑窗口。_win10 找不到护眼模式
文章浏览阅读845次,点赞19次,收藏19次。我差一点就中了Magniber勒索病毒
文章浏览阅读1w次,点赞3次,收藏56次。实验五:模拟分页式存储管理中硬件的地址转换和产生缺页中断,然后分别用LRU、FIFO、改进型的CLOCK算法实现分页管理的缺页中断。要求:显示每个页面在内存中的绝对地址,页表信息、列出缺页情况等。# 实验五:模拟分页式存储管理中硬件的地址转换和产生缺页中断,然后分别用# LRU、FIFO、改进型的CLOCK算法实现分页管理的缺页中断。# 要求:显示每个页面在内存中的绝对地址,页表信息、列出缺页..._1.实验内容:模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算
文章浏览阅读523次。一、字典字典(dicrionary)是Python中另一个非常有用的内置数据类型。字典是一种映射类型,字典用'{ }'标识,它是一个无序的“键(key):值(value)”对集合。二、字典中的键和值在同一个字典中,键(key)必须是唯一的但键必须是不可变的,如字符串、数字或元组。但值则不必唯一,值可以取任何数据类型。三、字典(dictionary)与列表(list)的区别(1)字典是无序的对象集合,列表是有序的对象集合。(2)字典是通过键来存取的,列表是通过索引值存取的。_字典类型的数据
文章浏览阅读5.2k次。随着网络威胁的发展,实施强大的API 安全策略来保护这些重要端点变得越来越重要。_最适合保护rest api免受未授权访问
文章浏览阅读1.7k次,点赞8次,收藏17次。散点图矩阵是一种显示多个变量之间关系的数据可视化工具,特别是当数据集包含三个或多个变量时,这种图表非常有用。在散点图矩阵中,每行和每列都代表数据集中的一个变量,而矩阵中的每个小图(除了对角线)都是两个变量之间的散点图。对角线上方和下方的图是散点图,显示两个变量之间的关系。对角线上的图通常是直方图或密度图,显示单个变量的分布。为了进一步美化可视化,我们在每一张图中,都绘制了线性回归的拟合图如下所示。关系识别:快速识别多个变量间的潜在关系,比如线性、非线性或没有关系。不同的颜色或形状可以代表数据中的分类变量。_散点图矩阵
文章浏览阅读1.7k次。最近刚看完了严蔚敏老师的数据结构教程,看的过程并没有实践,现在准备把里面讲到的主要算法,数据结构进行一遍实践..加深理解 这个类还有一些小问题: 里面的一些成员函数设计的并不是很好,并不能完全体现出OO精神(有些操作,比如GetHead(),GetTail()等破坏了类的封装性)..并且做多项式加法运算时,两个操作数双方的指数必须按升冥次序输入..(其实也可以增加一个成员函数_if(i!=m.length-1&&m.e[i+1].coef>0)
文章浏览阅读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动力学
文章浏览阅读4k次,点赞10次,收藏36次。基于C语言的链表的创建_c语言链表的创建
文章浏览阅读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..._如何用编程乌龟画出月亮
文章浏览阅读1.5k次。从趋势上来说,微信小程序的应用价值正在三个维度上面显现:营销(精准人群分类)、唤起(转化并调起APP)、连接线下(包括场景、智能硬件)等。可以预期,随着微信进一步开放更多底层能力,三大维度的应用上,将会有更多想象空间涌现。具体的,不妨看报告吧。 来源 | QuestMobile(QuestMobile)1. 小程序的边界在哪里?■ 移动小程序可连接生活场景,且发展受微信APP内生态影响小程序通过..._小程序 app 价值实现 上线运营报告
文章浏览阅读109次。java计算机毕业设计求职招聘网站设计与实现MyBatis+系统+LW文档+源码+调试部署。JSP基于JAVA的邮件过滤系统的设计与实现sqlserver。JSP企业客户服务与产品管理系统的设计和实现SQLServer。springboot基于Vue框架的养生系统。ssm基于Vue的去哪儿玩app的设计与实现。ssm基于JavaWeb的商铺租赁管理系统。ssm线上远程教学及自主学平台的设计与实现。_java大学生招聘求职网站的设计与实现