
QT
小帅比simon
热爱学习,想参与到改变世界的组织中!!
展开
-
QT学习笔记07QWidget(对象模型)
所有窗口及窗口控件都是从QWidget直接或间接派生出来的。在Qt中创建对象的时候会提供一个Parent对象指针,下面来解释这个parent到底是干什么的。QObject是以对象树的形式组织起来的。当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针。 这相当于,在创建QObject对象时,可以提供一个其转载 2017-01-14 23:07:17 · 639 阅读 · 0 评论 -
QT学习笔记17Socket通信
Qt中提供的所有的Socket类都是非阻塞的。Qt中常用的用于socket通信的套接字类:QTcpServer用于TCP/IP通信, 作为服务器端套接字使用QTcpSocket用于TCP/IP通信,作为客户端套接字使用。QUdpSocket用于UDP通信,服务器,客户端均使用此套接字。1 TCP/IP在Qt中实现TCP/IP服务器端通信的流程:创建套接字转载 2017-02-07 15:16:43 · 5121 阅读 · 2 评论 -
QT学习笔记14不规则窗体
常见的窗体是各种方形的对话框,但有时候也需要非方形的窗体,如圆形,椭圆甚至是不规则形状的对话框。实现步骤:新建一个项目,比如项目名称叫做"ShapeWidget",给此项目添加一个类"ShapeWidget",基类选择"QWidget"。为了使该不规则窗体可以通过鼠标随意拖拽,在类中重定义鼠标事件:mousePressEvent()、mouseMoveEvent()、以及绘转载 2017-01-17 09:39:37 · 804 阅读 · 0 评论 -
QT学习笔记13消息机制和事件
1 事件事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。在前面我们也曾经简单提到,Qt 程序需要在main()函数创建一个QApplication对象,然后调用它的exec()函数。这个函数就是开始 Qt转载 2017-01-16 13:34:41 · 3393 阅读 · 0 评论 -
QT学习笔记18多线程
通常情况下,应用程序都是在一个线程中执行操作。但是,当调用一个耗时操作(例如,大批量I/O或大量矩阵变换等CPU密集操作)时,用户界面常常会冻结。而使用多线程可以解决这一问题。多线程有以下几个优势:提高应用程序响应速度。这对于图形界面开发的程序尤为重要,当一个操作耗时很长时,整个系统都会等待这个操作,程序就不能响应键盘、鼠标、菜单等操作,而使用多线程技术可将耗时长的操作置于一个新的线程转载 2017-02-08 20:09:33 · 1218 阅读 · 0 评论 -
QT打包
玩qt5也有一段时间了,惭愧的是一直没有好好的发布过程序,因为写的都是小程序没啥需要用到发布,而且qt也说不上很熟悉,本来打算到基本掌握qt之后再来研究研究怎么打包程序,最近晚上的空闲时间多了,闲着也是闲着,于是便来试试。在网上搜索了一下资料,发现资料比较少,qt5打包的也只看见几篇博文,也不是很详细,所以当我成功的打包了我的第一个程序之后心里想着的就是一定要把经验共享出来,这方法不一定是转载 2017-02-19 22:48:01 · 413 阅读 · 0 评论 -
QT 串口接收不定长数据的各种不合格版本
串口接收不定长数据的各种不合格版本#include "mainwindow.h"#include "ui_mainwindow.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include <QApplication>#include <QTime>#include <QDateTime>#include <Q原创 2017-02-21 11:40:44 · 3950 阅读 · 0 评论 -
多线程释放对象
在做Symbian应用开发和MeeGo应用开发时Q框架是一个统一的开发框架,很多时候需要在QThread的run中new一个QUdpSocket来收发数据.这时,这个socket对象的释放就成了一个麻烦的问题.如果在thread的析构中直接delete这个socket对象,则会出现如下异常:[cpp] view plain copy print?转载 2017-02-21 16:19:03 · 491 阅读 · 0 评论 -
QObject: Cannot create children for a parent that is in a different thread错误
classTcpComm:publicQThread{ Q_OBJECTpublic: TcpComm(const QString &iAddrStr, quint16 iPort); ~TcpComm(); ........private: ....... TcpClient*mTcpCl转载 2017-02-21 16:23:45 · 36849 阅读 · 4 评论 -
QT 读串口可用代码初步调试通过
每一个包都加一个包头,里面包括数据类型(图片/温湿度),节点号(哪一个模块的数据),数据包的序号,数据包有效长度等信息,辅助解析串口数据。每一个包分两两部分读取,包头+有效数据。从包头获取有效数据长度,让串口只读取有效长度的字节数即可得到一个完整的数据包。在切换为包头读取状态!!!!void MainWindow::serialRead(){ int cnt_tmp; static原创 2017-02-22 12:10:09 · 654 阅读 · 0 评论 -
QT学习笔记16文件系统
文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。下面是 I/O 设备的类图(Qt5): QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现。QFl转载 2017-02-07 11:38:11 · 2792 阅读 · 0 评论 -
QT学习笔记12布局管理器
所谓 GUI 界面,归根结底,就是一堆组件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,组件的位置尤其重要。我们必须要指定组件放在哪里,以便窗口能够按照我们需要的方式进行渲染。这就涉及到组件定位的机制。Qt 提供了两种组件定位机制:绝对定位和布局定位。绝对定位就是一种最原始的定位方法:给出这个组件的坐标和长宽值。这样,Qt 就知道该把组件放在哪里以转载 2017-01-16 13:30:02 · 853 阅读 · 0 评论 -
QT学习笔记11常用控件
Qt为我们应用程序界面开发提供的一系列的控件,下面我们介绍两种最常用的两种,所有控件的使用方法我们都可以通过帮助文档获取。1 QLabel控件使用QLabel是我们最常用的控件之一,其功能很强大,我们可以用来显示文本,图片和动画等。显示文字 (普通文本、html)通过QLabel类的setText函数设置显示的内容:void setText(const QString &转载 2017-01-16 13:26:59 · 3048 阅读 · 1 评论 -
QT学习笔记01简介+程序框架+父对象+项目文件
Qt介绍Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。发展史1991年 Qt最早由奇趣科技开发 1996年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础 2008年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程语言 2012年 Qt又被Digia公司收购转载 2017-01-14 22:23:35 · 783 阅读 · 3 评论 -
QT学习笔记02信号与槽简介
标准信号和槽信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回转载 2017-01-14 22:29:47 · 1218 阅读 · 0 评论 -
QT学习笔记03坐标系统
以左上角为原点,X向右增加,Y向下增加。对于嵌套窗口,其坐标是相对于父窗口来说的。头文件#ifndef MAINWIDGET_H#define MAINWIDGET_H#include <QWidget>class MainWidget : public QWidget{ Q_OBJECTpublic: MainWidget(QWidget *parent = 0); ~转载 2017-01-14 22:34:09 · 508 阅读 · 0 评论 -
QT学习笔记04内存回收
QT使用了对象树,进行内存回收,只要指定了父对象的对象,QT都会自动回收内存!回收顺序是反向遍历树! 要满足自动回收 1)指定父对象后 2)直接或间接继承于QObject验证代码:自定义按钮头文件#ifndef MYBUTTON_H#define MYBUTTON_H#include <QPushButton>class MyButton : public QPushButton{转载 2017-01-14 22:42:12 · 417 阅读 · 0 评论 -
QT学习笔记05QMainWindow(菜单栏+工具栏+状态栏+浮动窗口)
工具栏自带浮动属性。QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。菜单栏一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。创建菜单栏,转载 2017-01-14 22:49:14 · 20983 阅读 · 1 评论 -
QT学习笔记06常见对话框
自己写的代码工程文件#-------------------------------------------------## Project created by QtCreator 2017-01-14T20:00:47##-------------------------------------------------QT += core guigreaterThan(QT_转载 2017-01-14 23:02:21 · 1051 阅读 · 0 评论 -
QT学习笔记08QtCreator常见快捷键
1)帮助文件:F1 (光标在函数名字或类名上,按 F1 即可跳转到对应帮助文档,查看其详细用法)2).h 文件和对应.cpp 文件切换:F43)编译并运行:Ctrl + R4)函数声明和定义(函数调用和定义)切换:F25)代码注释取消注释:Ctrl + / (选中代码再按快捷键)6)字体变大变小:Ctrl + 鼠标滚轮向上向下7)移动代码:选中所要移动的代码 -> 按住 ctrl + shift -转载 2017-01-14 23:12:51 · 1183 阅读 · 0 评论 -
QT学习笔记09QT编程规范
1) 类名:单词首字母大小,单词和单词之间直接连接,无需连接字符 如:MyClass,QPushButtonclass MainWindow{};2) 函数名字,变量名:第二个单词开始(不是从第一个单词开始),首字母大写,单词和单词之间直接连接,无需连接字符 如:void setFlag();QString getText();bool isDraw;3) Qt中内置的类型,头文件和类命名转载 2017-01-14 23:14:13 · 409 阅读 · 0 评论 -
QT学习笔记15绘图和绘图设备
1 QPainterQt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(Q转载 2017-02-07 10:09:54 · 2195 阅读 · 0 评论 -
QT学习笔记10资源文件
Qt 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。如果你的程序需要加载特定的资源(图标、文本翻译等),那么,将其放置在资源文件中,就再也不需要担心这些文件的丢失。也就是说,如果你将资源以资源文件形式存储,它是会编译到可执行文件内部。使用 Qt Creator 可以很方便地创建资源文件。我们可以在工程上点右键,选择"添加新文件…",可以在 Qt转载 2017-01-16 13:23:08 · 580 阅读 · 0 评论 -
QT 串口读取图片的最终版
利用多线程,但比之前更专业!子线程负责串口和图片文件的读写操作,主线程负责UI界面的更新!!!main.cpp#include "mywidget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MyWidget w; w.show(); r原创 2017-02-22 20:45:54 · 3428 阅读 · 2 评论