12 文件IO及路径
...
02 设置环境变量
设置环境变量1.环境变量的定义环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。 2. export终端命令 export命令可用于显示或设置环境变量。 export命令的效果仅限于当前终端。 export的语法:export [-fnp] [变量名]=[变量设置值] 参数说明: -f:代表[变量名称]中为函数名称。 -n:删除指定的变量;实际未删除,只是不会输出到后续指令的执行环境中。 -p:显示所有的shell赋予子程序的环境变量。 3.Linux设置环境变量的方法3.1终端里直接用export命令export...
14 Qt多线程
...
信号
信号1.基本概念信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程, 其实是在软件层次上对中断机制的一种模拟。 大多数情况下,是无法预测信号达到的准确时间,所以,信号提供了一种处理异步事件的方法 1.1信号的用途一个有“一定权限”的进程(比如内核)可以给另一个进程发送信号,所以信号是一种进程间通信的机制。当某个事件发生时,一个进程通知另一个进程。 1.2信号的使用案例 Linux在终端中输入 Ctrl + Z可以使内核发送**暂停信号 **(SIGCONT )以暂停前台的进程 Linux在终端中输入 Ctrl + C可以使内核发送中断信号(SIGINT )以结束前台的进程 用户可以通过 kill() 系统调用将任意信号发送给其它进程。当然对此是有所限制的,接收信号的进程和发送信号的进程的所有者必须相同,亦或者发送信号的进程的所有者是 root 用户 ...
17 定时器
定时器Qt有2种方式实现定时器的功能 1.使用QTimer类QTimer类非常简单使用,只需创建一个该对象,设置周期即可,在开启后,他会定时发出timeout()的信号,我们可以直接使用槽函数连接该信号。 1.1常用函数:123void setInterval(int msec); //设置周期void start(std::chrono::milliseconds msec);void start(void);//个人感觉它的start()应该是和QThread一样,创建了个新的线程 1.2使用信号槽123QTimer *timer = new QTimer(this);connect(timer, &QTimer::timeout, this, QOverload<>::of(&AnalogClock::update));timer->start(1000); 使用 定时器 +...
03 控件 QLabel
QLabel类QLabel用于显示文本、图像、动画,但不提供用户交互功能 继承关系:QLabel <- QFrame <- QWidget 1.常用API 方法 描述 void setText(const QString &text) 设置显示文本 void setAlignment(Qt::Alignment) 设置文本显示位置 void setFont(const QFont &) 设置字体 void setPixmap(const QPixmap &) 设置图片 void setMovie(QMovie *movie) 设置动图 void setNum(double num) 设置数字 void clear() 清空 2.显示图片123456789//1. 设置标签QLabel *label2 = new QLabel(this);label2->setGeometry(30, 70, 200, 200);//2. 设置图片QPixmap...
00 安装
安装及更新组件Qt是可以更新组件的,但是需要注意 1.Qt更新组件是,必须要添加正确的“档案网站”才行,不然就找不到。 https://mirrors.ustc.edu.cn/qtproject这个网站是可以用的 2.Qt 那个在线下载器速度很慢,需要用命令行启动这个软件,并且在后边加上这句话 --mirror https://mirrors.tuna.tsinghua.edu.cn/qt
02 关键类
Qt中的关键类Qt对C++标准库中的许多数据类型进行了重新封装,加快了其运行速度,并且也保证了其线程安全。 一、顺序容器1.QList类数组形式的线性表在Qt中的实现,提供了增、删、改、移动、替换等操作 支持用索引访问 插入、删除的时间复杂度是O(N) insert(),replace(),removeAt(),move(),swap(),append(),preappend(),removeFirst(),removeLast()...
优秀的程序结构
记录从网上一些大佬的代码中学习到的比较好的代码结构,有助于简化编程。 1.main.cpp和CUBE生成的main.c分开放,在main.cpp中定义用户函数Main(),放到main.c的main()中。这样即使CUBE再生成也不会覆盖了。 2.稚晖君在Main()中做了如下的事情: Main(){电机:绑定驱动、编码器、初始化按键:绑定回调函数开启定时器主循环} 3.在main.cpp中,它还定义了一堆定时器的Event Callbacks,按键回调函数的实现。 4.定时器中断函数不要直接写在Cube给我们定义的接口中,可以自己定一个函数,比如Tim1Callback100Hz(),然后把这个函数放进定时器的IRQHandler中调用就行了,比较直观。 5.如果一个类需要定时器作为时间基准,那么就定义.Tick()函数,并放到定时器的回调函数中。然后在类中定义_Elapsedtime这个变量记录时间。 Tick函数的内容一般就是:给类中的_Elapsedtime变量加时间;如果涉及状态机,则在Tick()里面更新状态,并调用回调函数。手表的PageManager类就是这样的。







