- 博客(14)
- 资源 (4)
- 收藏
- 关注
原创 Qt容器类
Qt中容器大体分为两大类:线性和关联。线性容器:QList:数据都是顺序存储的,最常用的是QList,本质是一个数组,但是可以快速的进行头插和尾插。可以进行索引访问,append()/prepend()两端添加,insert()中间插入,数据小于1000时推荐。 QLinkedList:使用迭代器索引、向中间插入一个很大的数据时使用QLinkedList。 QVector:...
2019-10-31 19:52:46 138
原创 Qt安全使用线程
使用背景:项目中需要开线程去播放声音、视频,简单的线程可以实现,Qt中简单的线程就是继承QThread类,然后重新run()方法即可,但是new出来的对象要时刻记得释放,不然就会有崩溃问题。于是想办法使用更为安全的线程,让系统替自己去管理new的对象,就是使用QRunnable类结合线程池实现。 初始方法:.hclass PlayThread : publi...
2019-10-31 18:52:15 149
原创 Qt顶层窗口为什么创建在栈不是堆?
Qt的程序主程序都都会这么一段代码:int main(int argc, char *argv[]){ QApplication a(argc, argv); DialogLocal w; w.show(); return a.exec();} 不管这个w实例是dialog或者Widgrt,都会在堆上创建,而不是new出来,这是为啥?...
2019-10-31 18:51:55 432 1
原创 Qt信号和槽自动关联
想要使得信号和槽自动关联,省去自己写connect函数需要以下这么做:规定的格式写槽函数,函数名格式:字符串on、部件的objectName和信号名称3部分。中间用下划线隔开,例如pushButton的按下槽:on_pushButton_clicked()。 使用这个槽且定义槽的类(包含相关的头文件,如<QPushButton>),构造函数中添加Mainwindow...
2019-10-31 18:51:09 745
原创 Qt槽收不到信号?
使用背景:刚接触Qt,一定会遇到信号和槽都写完了,也连接好了,编译没有报错,但是就是无法收到信号。原因在于使用了旧的connect写法时,不会进行编译检查,也就是说connect()函数一定不对。这里推荐使用Qt5,Qt5中的信号和槽相对于之前版本有了很大的变化,目的在于更好用,更安全。Qt4的版本看起来简单,实际使用中会遇到各种无法解释的问题,问题在于老版本并不进行安全检查,会让你...
2019-10-31 13:01:56 4782 2
原创 Qt事件
Qt中的事件和信号的作用都是为了使程序知道程序内部或外部的事情或者动作发生。任何QOBject子类实例都可以接收和处理事件。原理就是放入了消息循环,有事件发生就调用相关的处理函数。更全面的事件,在Qt帮助文档搜索The Event System。 常用的事件有鼠标、键盘、定时器等,下面代码实现了常用事件的使用,基本用法都是一样。 Qt还提供了事件过滤器...
2019-10-30 21:41:37 160
原创 Qt中parent的作用
Qt中类,如果继承的话,构造函数都会有一个parent参数,例如:MainPanel::MainPanel(QWidget *parent) : QWidget(parent), ui(new Ui::MainPanel){ }或者:class FileSystemWatcher : public QObject{ Q_OBJECTpriva...
2019-10-29 21:44:00 4205 1
原创 Qt定时查看文件(内容)状态
使用背景:想要在Qt中使用rpc,客户端会有新的不定时文件添加,设备需要随时的接收新文件中的数据,进行实时处理。最初根据这个需求想到的方案是,通过使用QDir的方法,结合QTimer定时器,不停轮询目标文件,实现对改变文件的监控。感觉实现起来也比较简单,但是做好比较难且花费时间。需要关注的是QDir类和相关方法,以下是嵌入main中的测试代码: QDir myDi...
2019-10-29 21:34:32 1001
原创 Qt自动关闭对话框
背景:想要在按键中断触发时,弹出一个模态对话框显示一些信息,若干秒后自动释放。在中断处理函数中进行对话框的创建:void Mainpanel::InterruptHandler(){ test *dialog = new Dialog(this); QTimer::singleShot(3000, this, &MainPanel::DialogClosed);...
2019-10-24 18:56:18 2296 1
原创 Qt读写配置文件(.ini)
使用场景: Qt编写的界面应用程序可以直接操作arm板,完成对wifi、蓝牙、屏幕、声音等的配置,但是每次开机(重启)后,界面会回到系统默认的配置,例如上次关机前调整声音为最大,下次开机时声音实际已经很大了,但是界面上显示是默认的状态(可能静音或别的值,如果没有单独设置过,一定不是100)。相应的解决方法有两种:一,在构造函数中重新获取一次声音的时间大小,然后去设置显示的图标的值,...
2019-10-14 18:45:30 406
转载 linux系统管理systemd
声明:本文非原创,部分自己理解上修改,查看原创请移步http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html。目录systemd是什么:systemd的资源UnitUnit 的状态Unit 管理Unit 依赖Unit配置文件Unit配置文件的状态Unit配置文件的格式配置文件...
2019-10-10 17:30:33 389
原创 linux开发板安装软件
使用命令opkg,软件来源是本地仓库或者物联网上仓库,例如:opkg install pstree用法:opkg must have one sub-command argumentusage: opkg [options...] sub-command [arguments...]where sub-command is one of:Package Manipulation:...
2019-10-10 15:11:27 798
原创 Qt中开启一次性任务
QTimer中封装有一个方法是若干时间之后执行一次,如下例子所示: QTimer::singleShot(3000, [](){ //要执行任务 qDebug("event"); });首先要包含#include<QTimer>头文件,然后调用方法singleShot,意思是3秒后执行b包内的内容一次。...
2019-10-10 15:05:29 733
原创 Qt中静态方法发送信号
背景:线程中开启了定时器,轮询传感器状态,传感器状态的获取是使用的静态方法,想要达到的效果是,一旦传感器满足阈值,就发送特定信号,界面类接收到这个信号后,实时显示弹窗(警告或提醒)。尝试过各种方法都不能奏效,最后验证此方法可行,connect函数写在ui的构造函数中,所以在此之前要完成信号的发射。首先,定义自己使用的定时器线程。#ifndef MY_THREAD_H#define MY...
2019-10-10 14:47:35 4490 1
jsonTool.zip
2021-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人