QT系列
文章平均质量分 82
We唯有自己强大
一个人应该竭尽所能,然后才听天由命。
展开
-
QT从入门到入土之常用控件(五)——按钮长按事件分析
**引言**最近在做qt项目,需要对button按钮添加一个长按事件(比如点击按钮,开始运动。松开按钮,运动停止)。查了些许资料,(差点误把QPushButton的press信号和长按事件混淆)在此记录一下经验。setAutoRepeat以前一直以为QPushButton不支持长按,才发现还有这个功能。用起来很简单: QPushButton *pBtnSub = new QPushButton(this); pBtnSub->setAutoRepeat(true); //启用长按原创 2022-07-19 15:04:11 · 1534 阅读 · 0 评论 -
QT从入门到入土之常用控件(一)——菜单栏和对话框
引言QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。(本篇主要介绍菜单栏和工具栏)**一,菜单栏**一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。创建菜单栏。QMenuBar* menuBar = new QMenuBar(t原创 2022-01-15 10:38:58 · 986 阅读 · 0 评论 -
QT从入门到入土(九)——TCP/IP网络通信(以及文件传输)
**引言**TCP/IP通信(即SOCKET通信)是通过网线将服务器Server端和客户机Client端进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯。控制器可以设置为服务器端或客户端。关于TCP/IP协议可详看:TCP/IP协议详解 - 知乎 (zhihu.com)总的来说,TCP/IP通讯有两个部分:客户端和服务器QTcpServer(监听套接字)和QTcpSocket(通讯套接字)监听套接字,顾名思义,监听关于各种通讯的状态,一旦进行通讯,监听套原创 2022-01-15 17:45:00 · 1475 阅读 · 0 评论 -
QT从入门到入土(八)——项目打包和发布
**引言**新手上路可谓是困难重重,你永远不知道下一个困难会在什么时候出现,在完成了运动控制卡封装发布过程中可谓是举步维艰。因此记录一下qt5+vs2019的打包发布方法。打包整体思路:将编译后的exe可执行文件及其各种依赖dll、lib、图标、配置文件等先打包放到一个目录中对其进行打包发布(两种方式):利用VS的插件Microsoft Visual Studio Installer Projects安装程序打包插件进行打包利用Enigma Virtual Box(单文件封装工具) 进行打包原创 2022-01-15 17:30:00 · 420 阅读 · 0 评论 -
QT从入门到入土(七)——鼠标事件
引言个人认为,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种:在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。系统自动发生,比如计时器事件(timerEvent)等。在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会传给当前组件的event函数。如果当前组件没有安装事件过滤器(这个后面会提到),则会被event函数发放到相应的原创 2022-01-15 17:00:00 · 2113 阅读 · 0 评论 -
QT从入门到入土(六)——定时器
Qt中有两种方法来使用定时器,一种是定时器事件,另一种是使用信号和槽。常使用信号和槽(代码看起来比较整洁)但是当使用多个定时器的时候最好用定时器事件来处理。**定时器方式一:定时器事件**需要: #include 方式:利用对void timerEvent(QTimerEvent* e)事件的重写。启动定时器 int QObject::startTimer ( int interval ) ;开启一个定时器,返回值为int类型。他的参数interval是毫秒级别。当开启成功后会返回这个定时原创 2022-01-15 16:00:00 · 594 阅读 · 0 评论 -
QT从入门到入土(五(2))——多线程(QtConcurrent::run())和线程池
**引言**在前面对Qt多线程(QThread)做了详细的分析:QT从入门到入土(五(1))——多线程(QThread) - 唯有自己强大 - 博客园 (cnblogs.com)但是最近在做项目时候,要将一个函数单独运行在另一个线程中,并且这个函数是私有函数,用到的数据也是私有数据,不能通过其他类访问,这样怎么办?如何在Qt中的当前类创建线程?**一, 最简单的多线程QtConcurrent::run()**其函数原型如下:QFuture<T> QtConcurrent::ru原创 2022-01-15 15:00:00 · 1007 阅读 · 0 评论 -
QT从入门到入土(五(1))——多线程(QThread)
引言前面几篇已经对C++的线程做了简单的总结,浅谈C++11中的多线程(三) - 唯有自己强大 - 博客园 (cnblogs.com)。本篇着重于Qt多线程的总结与实现。跟C++11中很像的是,Qt中使用QThread来管理线程,一个QThread对象管理一个线程,在使用上有很多跟C++11中相似的地方,但更多的是Qt中独有的内容。另外,QThread对象也有消息循环exec()函数,即每个线程都有一个消息循环,用来处理自己这个线程的事件。一,知识回顾首先先来回顾一下一些知识点:1,为什么需要多线原创 2022-01-15 14:30:00 · 999 阅读 · 0 评论 -
QT从入门到入土(四)——文件的读写操作
引言文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处理而开发的,所以文件读写是应用程序开发的一个基本功能。Qt 提供了两种读写纯文本文件的基本方法:用 QFile 类的 IODevice 读写功能直接进行读写利用 QFile 和 QTextStream 结合起来,用流(Stream)的方法进行文件读写。一、文件读操作(1)使用QFile类Qt封装了QFile类,方便我们对文件进行操作,可以按照如下的步骤进行:使用QFile加载文件对象打开文件 file.op原创 2022-01-15 13:45:00 · 5039 阅读 · 0 评论 -
QT从入门到入土(三)——信号和槽机制
摘要信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号 (signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣, 它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函 数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接 的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个 操作就会被自动触发。(这里提一句,Qt 的信号槽使用了原创 2022-01-15 09:15:05 · 259 阅读 · 0 评论 -
QT从入门到入土(二)——对象模型(对象树)和窗口坐标体系
摘要我们使用的标准 C++,其设计的对象模型虽然已经提供了非常高效的 RTTI 支持,但是在某些方面还是不够灵活。比如在 GUI 编程方面,既需要高效的运行效率也需要强大的灵活性,诸如删除某窗口时可不想把子窗口用代码一个个去析构。Qt 将这两者的优点完美的结合在了一起,创造出了特有的对象模型(Qt Object Model)。一,Qt的基本框架在上一篇中,我们已经完成了Qt的安装和VS的环境配置。QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置在讲解对象树之前,我们先来熟悉一原创 2022-01-15 09:00:41 · 334 阅读 · 0 评论 -
QT从入门到入土系列教程(一)——Qt5.14.2安装教程和VS2019环境配置
引言24岁的某天,承载着周围人的关心,一路南下。天晴心静,听着斑马,不免对未来有些彷徨。但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多。就像是对庸常生活的一次越狱,路才刚刚开始。。。。原创 2022-01-11 14:03:24 · 3291 阅读 · 0 评论