Qt
Goallegoal
左手击筑,右手编程。
展开
-
Qt 无法导入 QSound 头文件
Qt 无法导入 QSound 头文件向代码中添加音效时,需要使用到QSound类,就要引入QSound的头文件#include <QSound>但是在实际引入时,发现即使添加了该头文件,还是提示QSound文件不存在,这该如何解决呢?解决方案:首先查看Qt中的帮助文档,找到有关QSound的帮助信息,确认头文件的引入方式正确;然后看到关于qmake的信息:qmake: QT += multimedia,这条信息的含义是,如果想使用QSound需要在.pro文件中加入这条指令。这样就可原创 2020-12-07 11:16:02 · 3234 阅读 · 3 评论 -
Qt 基本文件操作
Qt 基本文件操作文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。在所有的 I/O 设备中,文件 I/O 是最重要的部分之一,因为大多数的程序依旧需要首先访问本地文件。QFile提供了从文件中读取和写入数据的能力。通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象后使用setFileName()来修改。QFile需要使用 / 作为文件分隔符,会自动将其转换成操作系统所需要的形式,例如 C:/windows 这样的路径在 Windows 平台下原创 2020-12-01 19:52:42 · 441 阅读 · 0 评论 -
了解 Qt 绘图设备QPixmap、QBitmap、QImage和 QPicture
了解 Qt 绘图设备QPixmap、QBitmap、QImage和 QPicture绘图设备是指继承QPaintDevice的子类,分别是QPixmap、QBitmap、QImage和 QPicture。四个不同的派生类主要功能也不同,其中,QPixmap专门为图像在屏幕上的显示做了优化;QBitmap是QPixmap的一个子类,它的色深限定为1,可以使用 QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QBitmap;QImage专门为图像的像素级访问做了优化;QPi原创 2020-12-01 15:33:07 · 522 阅读 · 0 评论 -
重写 QWidget 中的 paintEvent() 处理绘图事件
重写 QWidget 中的 paintEvent() 处理绘图事件Qt的绘图系统允许使用相同的 API在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间;QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。QPaintEn原创 2020-12-01 10:45:56 · 14014 阅读 · 1 评论 -
Qt中的事件过滤器
Qt中的事件过滤器在程序到event事件分发器之间,还有一层更为高级的过滤,称为事件过滤器,该部分可以完成从程序分发到event事件之间的一次高级拦截。事件过滤器的使用包含两个步骤:1、给控件安装事件过滤器;2、重写eventfilter事件。// 步骤1,安装事件过滤器ui->label->installEventFilter(this);// 步骤2,重写eventfilter事件bool Widget::eventFilter(QObject *watched, QEve原创 2020-11-30 21:22:03 · 395 阅读 · 0 评论 -
Qt中event事件分发器
Qt中event事件分发器运行程序时会根据实际的操作触发不同的多个事件,例如按下鼠标事件,直观讲好像是点击鼠标后,直接会调用mousePressEvent来处理事件,其实不然,在程序与各事件处理函数之间,还有一个专门用来管理事件的部分,称为事件分发bool event(QEvent *ev)。因此,实际事件处理流程是:用户点击鼠标,程序接收到该动作,将其交付给事件分发,事件分发对事件进行判断,然后传递给对应的事件处理函数,完成事件的处理。事件分发的返回值为bool类型,如果返回值为true,则表示用户将原创 2020-11-30 21:03:33 · 509 阅读 · 0 评论 -
Qt实现定时器的两种方法
Qt实现定时器的两种方法第一种,重写QTimer类中的timerEvent()方法#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); id1 = startTimer(1000); id2 = startTimer(2000);}Wi原创 2020-11-30 19:50:58 · 1709 阅读 · 0 评论 -
Qt设置鼠标追踪setMouseTracking()
Qt设置鼠标追踪setMouseTracking()void setMouseTracking(bool enable)参数可以为true或者false,若将参数置为false,意味着关闭鼠标追踪,此时只有当至少一个鼠标按键按下时才能捕获到鼠标移动事件。而将参数置为true时,即使没有按下鼠标键,移动鼠标时也可以捕获鼠标的移动事件。...原创 2020-11-30 15:48:35 · 1837 阅读 · 0 评论 -
Qt鼠标事件中的button()和buttons()
Qt鼠标事件中的button()和buttons()QEvent类是所有事件类的基类,Qt的主事件回路从事件队列获取本地窗口系统事件,将其转换为QEvent,然后再传递给QObjects。创建鼠标事件,MyLabel继承自QLabel,声明如下:#ifndef MYLABEL_H#define MYLABEL_H#include <QWidget>#include <QLabel>class MyLabel : public QLabel{ Q_OBJECT原创 2020-11-30 15:37:46 · 2024 阅读 · 0 评论 -
Qt自定义控件及设计控件功能
Qt自定义控件及设计控件功能Qt Creator中自带多种常用的控件,使用者可以在设计模式下进行页面布局,拖拽生成想要使用的控件,并在编辑模式下对控件的功能实现进行控制。这些开发环境自带的控件虽然种类多但功能单一,每一种控件只能完成特定的功能。为了满足开发需要,就需要将其中的几种控件进行组合,来完成单一控件无法实现的任务。下面介绍如何在Qt Creator中封装自定义控件。在封装自定义控件前,先要new一个用来放置控件的ui,这样既可以继续使用设计模式,又不妨碍其他控件。右键点击项目,添加Qt设计师界面原创 2020-11-26 17:01:16 · 931 阅读 · 0 评论 -
Qt Creator中的Item Widgets部署及使用-QListWidget、QTreeWidget、QTableWidget控件
Qt Creator中的Item Widgets部署及使用-QListWidget、QTreeWidget、QTableWidget控件1、QListWidget控件在设计模式中,拖拽Item Widgets中的List Widget生成一个空的列表。然后回到编辑模式进行部署: // #include <QListWidget> // 基于item,每行都代表一个单独的QListWidgetItem项,先创建一行 QListWidgetItem *item = new原创 2020-11-26 15:22:19 · 478 阅读 · 0 评论 -
Qt常用对话框及用法总结
Qt常用对话框及用法总结1、QMessageBox模态消息对话框QMessageBox包含上述四种消息对话框,分别为问题、信息、警告、错误提示,对外API分别为:QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardB原创 2020-11-26 11:17:01 · 548 阅读 · 0 评论 -
Qt创建模态和非模态对话框
Qt创建模态和非模态对话框在使用软件时,会遇到各式各样的对话框,弹出的对话框大致可以分为两大类,模态对话框和非模态对话框,怎么对这两种对话框进行区分呢?简单来说,对于模态对话框,在未关闭之前,无法再对同一软件的其他窗口进行操作,即强制性用户交互;而非模态对话框与之相反,未关闭之前,依然可以操作同软件下的其他窗口,即非强制性用户交互。Qt中根据功能需求,可以分别对这两类对话框进行设置与构建。首先来看模态对话框,强制交互的模态对话框一经打开,程序的运行会进入阻塞状态,直至对话框关闭或触发其他动作。其简单部原创 2020-11-25 15:19:35 · 527 阅读 · 0 评论 -
QMainWindow添加资源文件
QMainWindow添加资源文件之前已经通过纯代码的方式添加了QMainWindow的菜单栏、状态栏、铆接部件及中心部件,现在使用Qt的设计模式直接添加菜单栏。菜单栏添加完成,再回到编辑模式,通过代码向 “文件-新建” 前面添加一个图标: // 通过ui可以找到所有的已添加控件 // 使用绝对路径的方式 ui->actionnew->setIcon(QIcon(/*图片路径*/));开发环境更换可能会导致绝对路径不可用,下面介绍向qt中添加资源文件:1、首先原创 2020-11-25 11:45:42 · 103 阅读 · 0 评论 -
QMainWindow菜单栏、工具栏、铆接部件及中心部件的添加和使用
QMainWindow菜单栏、工具栏、铆接部件及中心部件的添加和使用QMainWindow是一个用户提供主窗口程序的类,包含一个菜单栏、多个工具栏、多个铆接部件、一个状态栏及一个中心部件,是许多应用程序的基础,如文本编辑器、图片编辑器等。菜单栏菜单栏最多只能有一个,下面演示菜单栏的简单创建,包含头文件#include <QMenuBar> // 创建菜单栏 QMenuBar *bar = menuBar(); // 将菜单栏放入窗口中 setMenuBar原创 2020-11-25 10:21:53 · 524 阅读 · 0 评论 -
Qt使用lambda表达式实现无参信号与有参槽的连接
Qt使用lambda表达式实现信号与槽连接C++11中的Lambda表达式用于定义并创建匿名的对象,以简化编程工作,Lambda表达式的基本结构为:[函数对象参数](操作符重载函数参数)mutable->返回值{函数体}。其中函数对象参数,[]表示一个lambda表达式的开始,这部分必须存在,不能省略。函数对象参数是传递给编译器自动生的函数对象类的构造函数的。函数对象参数只能使用那些到定义lambda为止时lambda所在作用范围内可见的局部变量,包括所在类的this,函数对象参数有以下几种形式原创 2020-11-24 15:32:11 · 941 阅读 · 0 评论 -
Qt编程中的信号和槽机制
Qt编程中的信号和槽机制在使用自定义类创建一个按钮之后,只能看到一个按钮的图形,但是使用鼠标点击并无任何反应,下面想要实现一个“点击按钮可以关闭窗口”的功能。关闭窗口的功能可以被抽象为以下对象和操作,即:按钮,点击按钮,窗口,关闭窗口。在qt中使用connect实现这个过程。connet(信号的发送者,发送的具体信号,信号的接受者,信号的处理(槽))信号槽的一个优点:松散耦合,即信号的发送端和接收端本身是没有关联的,通过connect连接,将两端耦合在一起。// myself buttonMyP原创 2020-11-24 11:03:30 · 217 阅读 · 0 评论 -
Qt理解对象模型-对象树
Qt理解对象模型-对象树在Qt中创建对象的时候会提供一个Parent指针,QObject是以对象树的形式组织起来的,当创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象,此时创建的QObject会自动添加到其父对象的children列表中。(注意,这里的父对象并不是继承意义上的父类)当父对象析构的时候,这个列表中的所有对象都将会被析构。这种机制在GUI程序设原创 2020-11-23 16:34:04 · 239 阅读 · 0 评论 -
Qt Creator中按钮控件常用API
Qt Creator中按钮控件常用API使用QPushButton创建按钮引入头文件#include <QPushButton>后,使用QPushButton *btn = new QPushButton;使用btn->show();的方式对按钮进行显示,则会以顶层方式弹出窗口控件;如果想让btn对象依赖在myWidget窗口中,则需要在父类的构造函数中使用btn->setParent(this);。在按钮上显示文本btn->setText("button");在创原创 2020-11-23 16:33:24 · 642 阅读 · 0 评论