Qt编程
Qt编程
ShenHang_
一个编程小菜鸡
展开
-
Qt socket通信
原创 2020-04-08 10:24:41 · 191 阅读 · 0 评论 -
Qt 使用互斥锁
1、官方文档:QMutex类提供线程间的访问序列化。QMutex的目的是保护一个对象、数据结构或代码片段,这样每次只有一个线程可以访问它(这类似于Java synchronized关键字)。通常最好将互斥对象与QMutexLocker一起使用,因为这样可以很容易地确保一致地执行锁定和解锁。2、官方示例: QMutex mutex; int number = 6; void met...原创 2020-03-28 22:51:07 · 3348 阅读 · 0 评论 -
Qt 多线程(继承QThread方法)
1.新建一个MyThread类,创建好以后修改继承关系,继承于QThread;2.直接使用QThread类中的虚函数run()(这是子线程处理函数,注意使用时不能直接调用,要通过start()间接调用),在MyThread类中对其进行重写即可。代码如下:mythread.h#ifndef MYTHREAD_H#define MYTHREAD_H#include <QObject...原创 2020-03-28 21:34:47 · 1136 阅读 · 0 评论 -
Qt 多线程(继承QObject,调用moveToThread方法)
QObject是Qt框架的基本类,但凡涉及到信号槽有关的类都是继承于QObject。QObject是一个功能异常强大的类,它提供了Qt关键技术信号和槽的支持以及事件系统的支持,同时它提供了线程操作的接口,也就是QObject是可以选择不同的线程里执行的。QObject的线程转移函数是:void moveToThread(QThread * targetThread) ,通过此函数可以把一个顶层O...原创 2020-03-28 19:51:57 · 964 阅读 · 0 评论 -
Qt 字节对齐
#pragma pack(push) //保存对齐状态#pragma pack(1)//设定为单字节对齐#pragma pack(pop)//恢复对齐状态我发现Qt中好像是默认4字节对齐。原创 2020-03-24 22:14:37 · 4830 阅读 · 2 评论 -
Qt 生成可执行的.exe文件
如果想在其他未装Qt的pc上运行,还需要将bin文件中的.dll文件封装到.exe中。1.把程序名.exe文件拷贝出来,创建一个单独的文件夹,放在这个文件夹下。2.找到这个:3.接着输入命令行,cd /d 路径(指的是需要打包的exe程序目录,就是刚才拷贝出来的exe程序所在的目录):4.输入如下命令行:windeployqt 程序名.exe。这一步操作是将所需的库文件全都拷贝到ex...原创 2020-03-22 16:02:28 · 872 阅读 · 2 评论 -
Qt QBuffer
直接上代码:mywidget.cpp#include "mywidget.h"#include "ui_mywidget.h"#include<QDebug>#include<QBuffer>//内存文件#include<QDataStream>MyWidget::MyWidget(QWidget *parent) : QWidget(pa...原创 2020-03-21 20:10:40 · 237 阅读 · 0 评论 -
Qt QTextStream
上一节我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对开发人员是透明的。它也会将换行符进行转换,同样不需要自己处理...原创 2020-03-21 19:20:58 · 472 阅读 · 0 评论 -
Qt QDataStream二进制文件读写
QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流,这种流完全不依赖于底层操作系统、CPU 或者字节顺序(大端或小端)。例如,在安装了 Windows 平台的 PC 上面写入的一个数据流,可以不经过任何处理,直接拿到运行了 Solaris 的 SPARC 机器上读取。由于数据流就是二进制流,因此我们也可以直接读写没有编码的二进制数据,例如图像、视频、音频等...原创 2020-03-21 16:50:44 · 1389 阅读 · 0 评论 -
Qt QFile读写文件
文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。下面是 I/O 设备的类(Qt5):QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现。QFlie:访问本地...原创 2020-03-21 11:24:05 · 338 阅读 · 0 评论 -
Qt 不规则窗口
常见的窗体是各种方形的对话框,但有时候也需要非方形的窗体,如圆形,椭圆甚至是不规则形状的对话框。实现步骤:1.新建一个项目,比如项目名称叫做“irregularWindow”,给此项目添加一个类“MyWidget”,基类选择“QWidget”;2.为了使该不规则窗体可以通过鼠标随意拖拽,在类中重定义鼠标事件:mousePressEvent()、mouseMoveEvent()、以及绘制函数p...原创 2020-03-21 10:08:41 · 341 阅读 · 0 评论 -
Qt 绘图设备
绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和 QPicture。其中,1.QPixmap专门为图像在屏幕上的显示做了优化,和平台相关,不能对图片进行修改;2.QBitmap是QPixmap的一个子类,它的色深限定为1,可以使用 QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QB...原创 2020-03-20 17:41:18 · 249 阅读 · 0 评论 -
Qt 简单绘图
整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。QPaintEngine类应用于QPainte...原创 2020-03-20 15:34:07 · 1011 阅读 · 0 评论 -
Qt 事件过滤器
通过前面的学习,我们已经知道,Qt 创建了QEvent事件对象之后,会调用QObject的event()函数处理事件的分发。显然,我们可以在event()函数中实现拦截的操作。由于event()函数是 protected 的,因此,需要继承已有类。如果组件很多,就需要重写很多个event()函数。这当然相当麻烦,更不用说重写event()函数还得小心一堆问题。好在 Qt 提供了另外一种机制来达到这...原创 2020-03-20 10:34:07 · 443 阅读 · 0 评论 -
Qt event函数
事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。如上所述,event()函数主要用于事件的分发。所以,如果你希望在事件分发之前做一些操作,就可以在派生类中重写这个event()函数了。例如,我们希望在一个QWidget组件中监听 tab...原创 2020-03-19 21:33:52 · 1827 阅读 · 1 评论 -
Qt 事件的接收和忽略
1.新建一个myButton类,将其基类改为QPushButton.2.在ui中新建一个Push Button控件,并将其提升为myButton.3.在mybutton.h中增加鼠标按下事件.#ifndef MYBUTTON_H#define MYBUTTON_H#include <QWidget>#include<QPushButton>class m...原创 2020-03-19 15:57:43 · 849 阅读 · 0 评论 -
Qt 事件
自定义控件的时候基类不能搞错,否则无法提升。接着在mylabel.h和mylabel.cpp中把基类都改成QLabel;#include "mylabel.h"MyLabel::MyLabel(QWidget *parent) : QLabel(parent){}#ifndef MYLABEL_H#define MYLABEL_H#include <QWidge...原创 2020-03-19 10:14:54 · 129 阅读 · 0 评论 -
QMainWindow和QWidget的区别
内容转载自:https://blog.csdn.net/superhcq/article/details/53509183在Qt工程创建时,Qt Widget Application模板下提供了不同的父类继承。这里,主要分析一下QMainWindow和QWidget的区别。分别以QMainWindow和QWidget为基类创建工程;Qt会自动创建一个以所选基类为父类的自定义类,自动创建ui...原创 2020-03-18 14:56:48 · 982 阅读 · 0 评论 -
Qt 自定义控件(使用提升的方法)
不用布局管理器中的ui,而是自定义控件(即用代码实现)。例:自定义以下控件:然后开始写代码:#include "smallwidget.h"#include<QSpinBox>#include<QSlider>#include<QHBoxLayout>SmallWidget::SmallWidget(QWidget *parent) : QW...原创 2020-03-18 14:22:39 · 2379 阅读 · 0 评论 -
Qt 布局
弹簧的使用:打破布局:例:通过布局管理器搭建如下登录界面:首先分成若干个容器:Containers控件–>Widget控件1.先在第一个Widget控件里添加Label控件,并插入图片;2.放两个弹簧,并对第一个Widget控件整体水平布局发现太大了就限制下大小:3.接下来在第二个Widget控件里添加Label控件、Line Edit控件,并对第二个Widge...原创 2020-03-18 13:21:45 · 189 阅读 · 0 评论 -
Qt Label控件
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this);//当前这句话是designer,在这句话后面写代码 //QLabel //设置文本内容 ui->labelText-&g...原创 2020-03-18 11:27:54 · 482 阅读 · 1 评论 -
Qt lineEdit控件
lineEdit控件是QLineEdit类中的;可以实现以下功能:#include<QDebug>#include<QCompleter>#include<QList>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindo...原创 2020-03-17 22:47:03 · 976 阅读 · 0 评论 -
Qt ui stackedWidget控件的page和pushbutton配合使用
1、stackedwidget的page编号只和它本身拥有的page的数量和列表顺序有关,与page命名无关。2、pushbutton控制某一个stackedwidget的page用步骤:会发现自动添加了一个槽,并且不需要自己写connect函数!class MainWindow : public QMainWindow{ Q_OBJECTpublic: Main...原创 2020-03-17 21:50:39 · 1630 阅读 · 0 评论 -
Qt getOpenFileName函数
为了说明QFileDialog::getOpenFileName()函数的用法,还是先把函数说明放在这里:QString QFileDialog::getOpenFileName (QWidget * parent = 0,const QString & caption = QString(),const QString & dir = QString(),const Q...原创 2020-03-15 22:01:48 · 1929 阅读 · 0 评论 -
Qt模态对话框和非模态对话框
模态框和非模态框创建都是一样的,关键在于显示方法的不同。两者的区别如下:模态对话框(不能对其他窗口进行操作),非模态对话框(可以对其他窗口进行操作)模态对话框通过exec()方法显示,而非模态对话框通过show()方法显示。这里就要说一下show()和exec()的区别,show():显示一个非模式对话框。控制权即刻返回给调用函数。弹出窗口是否模式对话框,取决于modal属性的值。...原创 2020-03-15 21:59:34 · 1089 阅读 · 0 评论 -
Qt实现主窗口和子窗口的切换
1.根据基类QWidget派生出两个类,MainWidget和SubWidget2.这里需要强调的一点的只有如何从子窗口切换到主窗口:因为为了把主窗口切换到子窗口,我们把SubWidget的对象作为MainWidget的数据成员,但是该如何实现从子窗口切换到主窗口呢?这里用到了关键字signals(这是Qt的功能,不是C++的)SubWidget的定义如下:#ifndef SUBWIDG...原创 2020-03-15 09:31:59 · 2081 阅读 · 0 评论