Qt中实用功能小合集

黑马QT教程笔记合集 QT教程视频地址:未更新完~ 阅读详情

就介绍无ui界面时的调用方法。

一、主界面___this

·背景颜色

	setPalette(QColor("pink"));

·背景图片

    QPalette  palette = this->palette();
    palette.setBrush(QPalette::Background,QBrush(QPixmap("/Users/yucheng/allpic/back.png")));
    setPalette(palette);

·窗口设置固定大小

    setFixedSize(400,300);

·窗口设置全屏

    showFullScreen();

·设置不显示标题栏

    setWindowFlag(Qt::FramelessWindowHint);

·设置整个界面半透明

	setWindowOpacity(0.5);

·窗体标题栏不透明,背景透明

	setWindowOpacity(0.5);

二、按钮___QPushButton

·鼠标接触组件的光标变化

    button->setCursor(Qt::BusyCursor);
光标类型解释
ArrowCursor箭头,默认
IBeamCursor输入光标
PointingHandCursor点击手势
以上是常用光标~~~~~~~~~~~~
UpArrowCursor上箭头
CrossCursor十字准心
WaitCursor等待符号
SizeVerCursor上下扩或/缩小窗口
SizeHorCursor左右扩展或缩小窗口
SizeBDiagCursor/ 方向扩展或缩小窗口
SizeFDiagCursor\ 方向扩展或缩小窗口
SizeAllCursor所有方向扩展或缩小窗口
BlankCursor隐藏光标
SplitVCursor上下方向移动内部窗口
SplitHCursor左右方向移动内部窗口
ForbiddenCursor禁止点击手势
WhatsThisCursor疑问光标
BusyCursor忙碌光标
OpenHandCursor张开手势
ClosedHandCursor握紧手势
DragCopyCursor拖动复制光标
DragMoveCursor拖动移动光标
DragLinkCursor拖动连接光标
BitmapCursor = 24
CustomCursor = 25

·文件选择框ui

QString filename = QFileDialog::getOpenFileName(this,"Open File", "","", 0);

源码:

QString getOpenFileName ( 
	QWidget * parent = 0, 
	const QString & caption = QString(), 
	const QString & dir = QString(), 
	const QString & filter = QString(), 
	QString * selectedFilter = 0, 
	Options options = 0 );

默认打开位置(主页)和文件过滤(txt, pdf)

(这里我用了pyside的方法)

	fileDialog = QtWidgets.QFileDialog()
	path = fileDialog.getOpenFileName(dir='/Users/yucheng', filter='(*.txt *.pdf)')

三、标签QLabel

·设置自动大小

    label->adjustSize();

四、文本输入框___QLineEdit、QTextEdit

·只允许输入数字或字符

参考博客:https://blog.youkuaiyun.com/qq_35040828/article/details/53587157

方法一

这是网上的一个方法,我试过,但是不知道为什么不能用,先放着。

	line = new QLineEdit(this);

    QIntValidator Int(10,99,this);		//只能输入10-99的整数
    line->setValidator(&Int);
方法二

这是正则表达式的用法:

先上代码:

	QRegExp reg("^(-?\\d+)(\\.\\d+)?$");

    QRegExpValidator * regV = new QRegExpValidator(reg,this);
    line->setValidator(regV);

^ 是起始部分;
-?是“-”可有可无;
\d 是数字,相当于[0-9];
+是后面有大于等于1个\d,\d+是一个整体;
\.是小数点;
(···)?是(···)部分可有可无;
$ 是末端部分;

但是在Qt中使用正则用的是字符串形式,所以对转义字符,我们需要内部将“\”转义,所以就出现了程序中的\\d,\\.形式。

这段的意思是只有(起始输入“-”或者不输入,后面加上若干数字,最后可以加上带有“.”及后面的数字)有效输入,也就是所有数字集合。

对于正则表达式的使用,可以自行了解。本文不予过多解释。

常用正则表达式输入说明
“^(-?\d+)(\.\d+)?$”double
“^(\d+)(\.\d+)?$”unsigned double
“^-?\d+$”int
“^\d+$”unsigned int
“^([a-z]|[A-Z])+$”英文输入,大小写随意
“^[A-Z]+$”英文只能大写
“^[a-z]+$”英文只能小写
“^[A-Z]([A-Z]|[a-z])+$”第一个英文必须是大写

·QTextEdit设置透明

//这里我用的pyside2,思路是一样的
		pl = QtGui.QPalette()
        brush = QtGui.QBrush()
        brush.setColor(self.color)
        pl.setBrush(QtGui.QPalette.Base, brush)
        self.textEdit.setPalette(pl)

·QLineEdit不同形式输入,密码、隐藏···

    line->setEchoMode(QLineEdit::Normal);
代码解释
Normal默认,无特殊
NoEcho不显示输入
Password输入密码
PasswordEchoOnEdit输入时显示,结束输入时转换成密码

·从上、下、左、右开始输入

    line->setAlignment(Qt::AlignRight);
代码解释
AlignTop顶部
AlignBottom底部
AlignLeft / AlignLeading左边居中,默认
AlignRight / AlignTrailing右边居中
AlignHCenter水平方向居中
AlignJustify(和AlignLeft效果相同)
AlignAbsolute同上
AlignVCenter竖直方向居中
AlignBaseline左边居中
AlignHorizontal_MaskAlignLeft / AlignRight / AlignHCenter / AlignJustify / AlignAbsolute
AlignVertical_MaskAlignTop / AlignBottom / AlignVCenter / AlignBaseline
AlignCenterAlignVCenter / AlignHCenter

·设置不可编辑

    line->setReadOnly(true);

·嵌入图形

    QAction *act = new QAction;
    act->setIcon(QIcon("/Users/yucheng/allpic/quit.png"));
    line->addAction(act,QLineEdit::TrailingPosition);
    //尾端嵌入
    //line->addAction(act,QLineEdit::LeadingPosition);
    //首端嵌入

·设置占位字符 / 提示文本显示

当有文本输入时自动消失。

    line->setPlaceholderText("there is a lucky dog");

·自动补全功能

如输入一些关键字,下拉框自动显示要补全的内容。

这块设计到另外两个类,一个是QCompleter,此类常用于下拉框的显示。
一个是QStandardItemModel,这是制作和表格相关的类。

一共分三步:

1、定义原型
    model = new QStandardItemModel(0,1,this);			//建立一个0行1列的表格模型
    QCompleter * com = new QCompleter(model,this);		//将下拉框建立在表格基础上
    line->setCompleter(com);							//申明下拉框
2、设置下拉框属性
//构造函数
{
    connect(line,&QLineEdit::textChanged,this,&Widget::LineChanged);	//当前文本改变时调用槽函数
}

//槽函数
void Widget::LineChanged()
{
    QStringList list;
    list << "@@@" << "!!!" << "###" << "$$$" << "%%%" << "^^^";		//定义一个list
    model->removeRows(0,model->rowCount());		//将model内全部删除,否则会一直添加。不可用clear函数!
    for(int i = 0 ; i < list.size(); i++)		//循环n次
    {
        model->insertRow(0);					//在第0行插入
        model->setData(model->index(0,0),line->text()+list.at(i));		//设置第0行数据
    }
}

此时输入时效果:

当然砸实际操作中会有一些问题,比如说选中之后会再次弹出,因为触发了textChanged信号;此时你需要判断是否已经输入预期值,并且不在提示。
最简单的方法是判断是否已有list中内容。

    QStringList list;
    list << "@@@" << "!!!" << "###" << "$$$" << "%%%" << "^^^";
    for(int i = 0 ; i < list.size(); i++)
        if(line->text().contains(list.at(i)))
        	return;

五、动态加载页面(pyside)

from PySide2 import QtWidgets, QtGui, QtCore
import sys

class LoadUI:
    def __init__(self, path, message='', w=240, h=200):
        _desk = QtWidgets.QDesktopWidget()
        self.W, self.H, self.w, self.h = _desk.width(), _desk.height(), w, h
        self.x = (self.W-self.w)/2
        self.y = (self.H-self.h-100)/2

        self.widget = QtWidgets.QWidget()
        self.widget.setGeometry(self.x, self.y, self.w, self.h+50)
        self.widget.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        self.widget.setAttribute(QtCore.Qt.WA_TranslucentBackground)
        self.widget.show()

        self.label = QtWidgets.QLabel(self.widget)
        self.label.setGeometry(0,0,self.w,self.h)
        self.movie = QtGui.QMovie(path)
        self.label.setMovie(self.movie)
        self.label.show()
        self.movie.setSpeed(100)
        self.movie.start()
        self.movie.stateChanged.connect(self._restart) # 默认动画只播放一遍,采用信号机制重复播放


        self.label = QtWidgets.QLabel(self.widget)
        self.label.setText(message)
        self.label.setGeometry(10,self.h-30,self.w,30)
        self.label.show()

    def finish(self):
        self.widget.close()

    def _restart(self):
        self.movie.start()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)

    mainw = LoadUI('./src/gif/load.gif', '加载中,请稍等...')
    # for i in range(5):
    #     print(mainw.movie.loopCount())
    #     time.sleep(1)
    sys.exit(app.exec_())

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果还有一些常用的方法没有涉及的,欢迎评论补充!

qt代码格式化设置,统一代码风格 在开发过程中为了使每个人的开发代码结构保持一致,我们通常会有一些约定,代码的格式化。QtCreator开发工具有一个很好的插件工具可以使得每个开发者的代码风格保持一致。我们来看看如何配置吧! 阅读详情

相关推荐

Qt 基础教程合集

Qt是一个令人难以置信的全面框架,除了基本特性之外,它还包含了许多其他特性,旨在为您提供真正的专业开发体验。目前最常用的图形界面开发工具之一是Electron。Electron是一个开源的框架,它允许开发者使用Web技术(HTML、CSS和JavaScript)来构建跨平台的桌面应用程序。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 520

Qt 框架功能概述

头文件包含 Qt 框架中的一些全局定义,包括基本数据类型、函数和宏。一般的 Qt 类的头文件都会包含这个头文件,所以用户程序中无须包含这个头文件就可以使用其中的定义。中定义的数据类型Qt 数据类型POSIX 标准等效定义字节数qint81qint162qint32signed int4qint648qlonglong8quint81quint162quint324quint648quint648uchar1。

pxxzhk的博客 2316

QT - QT开发进阶合集

本文介绍了QT框架的基础知识和核心功能,主要面向已有C++基础的学习者。内容涵盖信号与槽机制(包括参数详解和连接类型)、7类实用控件(ComboBox、LineEdit、TextEdit等)、高级控件TreeView与TreeWidget的实现与区别、布局管理(DockWidget、StackedWidget、Splitter)以及消息框使用。通过具体代码示例(基于QT 6.9.1)演示了模型-视图架构、数据驱动实现方式等核心概念,并比较了View类与Widget类的特性差异。文章强调"一通百通&

阿博的博客 1164

QT介绍与特点

Qt(官方发音 [kju:t],音同 cute)是一个跨平台的C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,对于不了解 C++ 的读者,我建议先阅读《C语言教程》,再阅读《C++教程》。C++ 是在C语言的基础上发展起来的,学完C语言就学了 C++ 的一半了。

KK_2018的技术博客_程序员不止是程序员 4448

全面Qt应用项目实战合集

尽管 Qt 提供了丰富的标准控件,但总有特殊需求需要自己造轮子。继承QWidget,重写,就能画出任意图形。比如做个圆形进度条:Q_OBJECTpublic:= val) {update();// 请求重绘signals:protected:private:关键用了Q_PROPERTY,这让属性可以在样式表中绑定:然后在paintEvent里用QPainter绘图:// 背景灰环// 前景蓝弧// Qt单位:1/16度。

weixin_36178216的博客 871

AgentVerse实战:构建多智能体协作系统的关键技术与应用场景

本文深入探讨了AgentVerse框架在构建多智能体协作系统中的关键技术及应用场景。通过分析智能体通信协议、环境交互机制和任务分解算法,展示了如何利用大型语言模型(LLM)实现智能体间的专业化分工与动态协作。文章还提供了智能软件开发团队和智能客服系统等典型应用案例,以及部署优化实践,为开发者构建高效的多智能体系统提供实用指导。

weixin_29254029的博客 361

Qt应用开发常用功能

这条语句能够使程序在while等待期间,去处理一下本线程的事件循环,处理事件循环最多100ms必须返回本语句,如果提前处理完毕,则立即返回这条语句。最简单的延时方法就是使用QThread类的sleep(n)、msleep(n)、usleep(n),这几个函数的不良后果就是,GUI会在延时的时间段内失去响应,界面卡死,所以,这三个函数一般只用在非GUI线程中。这样做会存在一个问题,当在死循环的时候,我们的界面是无法刷新,用户是不会响应用户的任何交互的。阻塞的原理就是:在延时期间,本线程的事件循环得不到执行。

houxian1103的博客 923

先进封装技术 Part03---重布线层(RDL)的科普

RDL是一种在芯片封装过程中用于重新分布电气连接的技术。它通过在芯片表面或中介层上形成额外的布线层,重新分配芯片的I/O(输入/输出)位置,以适应不同的封装需求和提高电气连接的灵活性。

阿拉伯梳子的专栏 4703

Qt之常用功能代码片段

打开文件 打开指定文件,给到文件路径+文件名即可 QDesktopServices::openUrl(QUrl("url+name")); 弹出提示消息 QMessageBox::information(this,tr("Export data succeed"),tr("data saved in %1").arg(saveFile),tr("OK"));

lxcw_sir的博客 928

记一次完整的RPG Maker MV游戏逆向过程(思路一)

了解RPG Maker MV的文件建构 上一篇文章,我们已经成功在PC上运行了游戏,那我们如何对游戏进行逆向呢? 首先要了解正常的RPG Maker MV制作的游戏应该具有哪些文件,以及他的结构 那如何了解他的结构呢,很简单,我们只需要用RPG Maker MV创建一个默认工程,来看看一个游戏的最简结构是怎么样的 创建新项目 项目创建完成 查看项目目录结构 是不是和之前解包出来的很像呢? 通...

Ciiiiiing的博客 1万+

基于A*算法的二维栅格地图路径规划与避障MATLAB仿真

本文将介绍如何使用MATLAB编写基于A*算法的二维栅格地图路径规划与避障的仿真程序。我们可以使用二维数组表示地图,其中每个元素表示一个栅格的状态,例如1表示障碍物,0表示可行走区域。接下来,我们需要定义A*算法的节点类。G值表示从起始节点到当前节点的代价,H值是启发式函数估计的从当前节点到目标节点的代价。算法,我们可以有效地找到起始点到目标点的最短路径,并在仿真中进行可视化展示。算法的基本思路是从起始节点开始,按照一定的启发式函数选择下一个节点,直到找到目标节点或者遍历完所有可行走区域。

ByteWhizX的博客 1273

【免费下载】 qt5_dll动态链接库合集

qt5_dll动态链接库合集 【下载地址】qt5_dll动态链接库合集 qt5_dll动态链接库合集欢迎使用Qt5_DLL动态链接库合集!本资源专门针对需要运行基于Qt 5框架的应用程序的开发者和用户 项目地址: https://...

gitblog_09730的博客 1007

点云配准3:3d-ndt算法在pcl上的实现以及参数设置

3d-ndt算法在pcl上的使用方法以及参数设置

诺有缸的高飞鸟的博客 7892

Qt学习资料pdf合集:全面提升Qt编程技能

Qt学习资料pdf合集:全面提升Qt编程技能 【下载地址】Qt学习资料pdf合集 这套Qt学习资料PDF合集是专为Qt编程学习者精心准备的资源宝库,涵盖了多本经典书籍和实用图表,包括《C++ GUI Programming with Qt》、《Foundations Of Qt Development》、《Qt5 C++...

gitblog_06734的博客 1085

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1693

在 RAP 里把编号这件事做得既优雅又合规:Early Numbering 与 Late Numbering 的落地指南

本文探讨了 SAP RAP 框架中的三种主键编号策略及其适用场景。文章首先指出传统 ABAP 应用中主键处理的局限性,详细分析了早期编号(外部/内部)和延迟编号的差异,强调延迟编号在避免业务断号方面的优势。通过 Partner 业务对象案例,文章演示了延迟编号的实现方法,包括行为定义配置、保存类实现和编号分配逻辑。同时指出测试中常见的校验陷阱,并提醒生产环境应避免简单的 MAX+1 方案,建议采用原子取号机制确保并发安全。全文从业务合规性和技术实现两个维度,为 RAP 应用的编号策略选择提供了实用指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1846

【亲测免费】 简化Qt应用部署:Qt5_DLL动态链接库合集推荐

简化Qt应用部署:Qt5_DLL动态链接库合集推荐 【下载地址】qt5_dll动态链接库合集 qt5_dll动态链接库合集欢迎使用Qt5_DLL动态链接库合集!本资源专门针对需要运行基于Qt 5框架的应用程序的开发者和用户 项目地...

gitblog_09721的博客 792

汽车信息安全--SHE中的密钥管理(二)

上一篇我们讲解了HTA基本概念,SHE和EVITA HSM区别以及SHE的架构,接下来我们聊一聊SHE中的密钥管理策略。

认真搞搞汽车MCU 2402

QT5开发及实例png图片合集

QT5开发及实例png图片合集 去发现同类优质开源项目:https://gitcode.com/ 这里是QT5开发及实例png图片的集合,包含了丰富的图片资源,特别适合QT5开发学习使用。 资源描述 此资源文件为「QT5开发及实例png图片合集.rar」,内含大量png图片,是从1G多的文件中精心提取出来的。这些图片非常难找,全网基本只有此处能找到如此完整的单独合集。我们将其单独分出,方便用户学习...

gitblog_06783的博客 389

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2025年最新版:Qt 学习全攻略(附超全资源合集)

这份Qt学习全攻略,专为C++开发者与GUI爱好者打造。它直击学习痛点——资料零散、路径不清晰,并提供系统化的解决方案。文章不仅包含完整的学习路线图,还推荐了一个持续更新的GitHub宝藏仓库,其中涵盖官方文档、视频课程、书籍及实战项目,助你高效入门与进阶。

qq_64978731的博客 2156

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Qt中文帮助手册资源合集:助您快速掌握Qt框架

Qt中文帮助手册资源合集:助您快速掌握Qt框架 【下载地址】Qt中文帮助手册资源合集 Qt中文帮助手册资源合集是专为Qt框架开发者打造的中文文档集合,旨在帮助开发者更高效地掌握Qt语法和特性。对于不擅长阅读英文文档的开发者,这份资料提供了详细的中文解释,尤其适合初学者快速上手。通过使用本合集,开发者可以轻松理解Qt的核心...

gitblog_06709的博客 503

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Qt例子合集:Qt学习者的宝藏资源库

Qt例子合集:Qt学习者的宝藏资源库 【下载地址】Qt例子合集 Qt例子合集是一个专为Qt学习者和开发者打造的综合性资源库,汇集了丰富且实用的编程实例。无论您是初学者还是资深开发者,都能在这里找到适合的案例,涵盖基础控件使用、常用对话框操作、图形特效处理、网络编程、数据库操作及多线程编程等典型场景。这些精选示例不仅具有高...

gitblog_06798的博客 444

Qt 例子合集

Qt 例子合集 【下载地址】Qt例子合集 Qt例子合集是一个专为Qt学习者和开发者打造的综合性资源库,汇集了丰富且实用的编程实例。无论您是初学者还是资深开发者,都能在这里找到适合的案例,涵盖基础控件使用、常用对话框操作、图形特效处理、网络编程、数据库操作及多线程编程等典型场景。这些精选示例不仅具有高度的代表性,还能帮助您...

gitblog_06727的博客 346

Qt高质量的开源项目合集

尊重作者,支持原创,如需转载,请附上原地址:开源项目推荐:Qt有关的GitHub/Gitee开源项目(★精品收藏★)_$firecat全宏的代码足迹$-优快云博客_qt开源项目https://libaineu2004.blog.youkuaiyun.com/article/details/77369837 Q:想请教下Qt5 之后推出的qml与之前qt4的ui 开发方式,有冲突吗?我公司开发桌面程序,是两种方式兼用?还...

VCMamba的博客 2万+

Qt常见面试题合集

信号槽类似于软件设计模式中的观察者模式,(观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。)被观察者发出的信号(signal),观察者收到自己注册监听signal,就通过槽(slot)关联的槽函数function实现动作操作。

oscar999的专栏 2952

Qt中文帮助手册资源合集

Qt中文帮助手册资源合集 【下载地址】Qt中文帮助手册资源合集 Qt中文帮助手册资源合集是专为Qt框架开发者打造的中文文档集合,旨在帮助开发者更高效地掌握Qt语法和特性。对于不擅长阅读英文文档的开发者,这份资料提供了详细的中文解释,尤其适合初学者快速上手。通过使用本合集,开发者可以轻松理解Qt的核心功能,提升开发效率和项...

gitblog_06707的博客 409
上一篇: Qt右击菜单项
下一篇: Mac端Qt应用程序打包成安装包
巨蟹贼香
博客等级 码龄9年 76粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值