2026/10/26 10:24:17

QT零碎知识点(一)

QT零碎知识点(一) 目录1.this-setFixedSize(this-geometry().size());2.this-setWindowFlag(Qt::FramelessWindowHint);3. painter.drawPixmap(0,0,width(),height(),QPixmap(:/new/prefix1/Images/musicplayer_ui.jpg));4.#include5.#include6.#include7.#include8.#include9.#include10.#include1.this-setFixedSize(this-geometry().size());把当前窗口固定为它当前的宽度和高度使窗口不能再被用户拖动调整大小。geometry()是 Qt 中QWidget类提供的函数用于获取控件的几何信息包括x()控件左上角的横坐标。y()控件左上角的纵坐标。width()控件的宽度。height()控件的高度。这里的size()会从geometry()返回的几何信息中取出宽度和高度返回一个QSize对象。fixed固定geometry几何学this-setFixedSize(QSize(800, 600))将窗口的最小尺寸和最大尺寸都设为800 × 600从而禁止窗口变大或变小。2.this-setWindowFlag(Qt::FramelessWindowHint);去掉窗口系统自带的边框和标题栏。frameless无边框hint提示/暗示setWindowFlag()Qt 的QWidget类提供的成员函数用于设置窗口标志Window Flag从而改变窗口的一些系统级特征。Qt::FramelessWindowHintQt 提供的一个窗口标志含义是无边框窗口。3. painter.drawPixmap(0,0,width(),height(),QPixmap(:/new/prefix1/Images/musicplayer_ui.jpg));QPainter painter(this); painter.drawPixmap(0,0,width(),height(),QPixmap(:/new/prefix1/Images/musicplayer_ui.jpg));把一张图片绘制成当前窗口的背景并让图片铺满整个窗口。这行代码创建了一个绘图对象painter让它在当前窗口上进行绘制。QPainter painter(this)QPainterQt 提供的绘图类。painter给这个绘图对象起的变量名可以自己命名。this表示当前窗口也就是告诉painter要在哪里画。可以理解为拿起画笔准备在当前窗口上画画。QPixmap(:/new/prefix1/Images/musicplayer_ui.jpg)QPixmap是 Qt 中用于保存和显示位图图像的类。括号里的字符串是图片的资源路径这里的:/表示从 Qt 资源系统中读取文件而不是直接从电脑磁盘的某个绝对路径读取。这通常意味着已经把musicplayer_ui.jpg添加到了项目的.qrc资源文件中。drawPixmap(0, 0, width(), height(), ...)drawPixmap()的前四个参数决定图片绘制的位置和尺寸。参数含义0图片左上角的横坐标0图片左上角的纵坐标width()当前窗口的宽度height()当前窗口的高度因此图片会从窗口左上角(0, 0)开始绘制宽度和高度分别设置为窗口的宽度和高度。注意 如果图片原始尺寸与窗口尺寸不同图片会被拉伸或压缩以填满窗口可能导致变形。4.#include QNetworkAccessManager引入 Qt 的网络访问管理类让你的 C 程序能够发送网络请求、接收网络响应。access访问/进入5.#include QNetworkRequest引入 Qt 的网络请求类让 C 程序能够定义一次网络请求的具体内容。QNetworkAccessManager负责发送网络请求。QNetworkRequest负责描述这次请求例如要访问哪个网址。QNetworkReply负责接收和读取服务器返回的结果。6.#include QNetworkReply引入 Qt 的网络响应类用来读取服务器返回的数据并检查网络请求是否成功。QNetworkAccessManager负责发出请求而QNetworkReply负责处理请求返回的结果。reply回复7.#include QEventLoop引入 Qt 的事件循环类让程序可以创建一个局部的事件循环并在满足条件时退出。例如音乐播放器向服务器请求歌曲信息需要等待服务器返回结果。可以创建一个QEventLoop等网络请求完成后再退出循环。#include QEventLoop #include QNetworkAccessManager #include QNetworkRequest #include QNetworkReply #include QUrl QNetworkAccessManager manager; QNetworkRequest request(QUrl(https://example.com)); QNetworkReply *reply manager.get(request); QEventLoop loop; connect(reply, QNetworkReply::finished, loop, QEventLoop::quit); loop.exec(); // 执行到这里说明请求已经结束 QByteArray data reply-readAll(); reply-deleteLater();8.#include QJsonArray引入 Qt 的 JSON 数组类用来存储和处理 JSON 格式中的数组数据。JSON 是一种用来组织和传输数据的文本格式。程序要准确地识别信息就需要一种更规范的格式。JSON 就可以做到{ name: 晴天, singer: 周杰伦, duration: 269 }JSON 有几种常见的数据类型类型示例含义字符串name: 晴天文本需要双引号数字duration: 269数值不需要引号布尔值isPlaying: true真或假只能写true或false数组songs: [晴天, 稻香]一组数据用[]对象song: {name: 晴天}一组键值对用{}空值artist: null表示没有值有几个规则需要特别注意JSON 的字符串必须使用双引号不能使用单引号。键和值之间用冒号:分隔。多个项目之间用逗号,分隔。最后一项后面不能多写一个逗号。9.#include QMediaPlayer引入 Qt 的媒体播放器类让 C 程序能够控制音频或视频的播放。例如界面上有播放按钮、暂停按钮和进度条QMediaPlayer负责播放歌曲。QPushButton负责让用户点击播放或暂停。QSlider可以用来调节音量或拖动播放进度。也就是说按钮是操作入口QMediaPlayer才是真正负责控制媒体播放的对象。10.#include QSqlDatabaseQSqlDatabase连接数据库。QSqlQuery执行 SQL 语句。QSqlError获取数据库错误信息。QDebug通过qDebug()输出调试信息。