QT教程:基本控件及相关类的介绍和使用

2023-11-10

一、QString类:

Qt提供了自己的字符串处理类,不用担心内存分配以及关于\0结尾的这些注意事项,QSting会自动对占用的内存进行扩充,链接非常的迅速

实例:
	QString str = "hello";
	str += "world";  //拼接字符串操作
	对象函数:
		str.append("hello"):在字符串末尾追加一个字符串,也是拼接动作
		str.setNum(数值):将数值转为字符串存放
		str.toLower():将字符串转为全小写并返回
		str.toUpper():将字符串转为全大写并返回
		str.mid(起始位置,截取个数):截取字符串,并返回,如果第二个参数省略,则默认截取到末尾为止
		str.startsWith("字符串"):返回str是否是以指定字符串打头
		str.endsWith("字符串"):返回str是否以指定字符串结尾
		str.left(数值):返回str从左开始的n个字符串
		str.right(数值):返回str从右开始的n个字符串
		str.isEmpty():返回字符串是否是一个空串
		str.replace(起始位置,个数,"替换的内容"):将str中指定位置的串替换掉
		str.toUtf8():将QString转为QByteArray对象返回
		注意:QByteArray对象与QString对象极为相似,只是QString是专门用来处理字符串的,能处理utf-8编码的所有字符
		而QByteArray只是单纯用来处理数据的,除了能处理ASCII编码字符,其它复杂编码不能处理
	    QByteArray转QString:QString str = QByteArray("hello");
	    str.split("分隔符"):将字符串以指定的分隔符分割为多个字串,返回一个QStringList

二、数据类型转换

以下方法是从QObject类上继承下来的:
str.toInt()
str.toLong()
str.toUint()
str.toFloat()
str.toShort()
str.toDouble()
str.toLongLong()
str.toStdString():转为c++的标准string类对象.c_str()可以获取到char *类型的数据
格式化用法:
	QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello")
	QString str.sprintf("%d %s", 10, "hello");

三、字符串列表

QStringList:是一个QString的集合类,可以保存多个字符串
	实例:
		QStringList strList;
		strList[下标]:通过下标的方式访问集合中的字符串
		strList << "串1" << "串2" << "串3" :将多个串追加到集合中
		strList.append("字符串"):将指定字符串追加到集合中
		strList.count():获取集合中字符串的总个数
		strList.insert(位置,"字符串"):向集合指定位置中插入一个字符串
		遍历:
			for(QString item : strList)
			{
				 //代码块		
			}		

四、QT常用基本控件(重要)

1、PushButton:按钮

它的基本方法如下:

font:字体调整
enable:是否可操作
geometry:设置初始位置和大小
cursor:当鼠标移动上去后要显示的形状
toolTip:鼠标移上去后的提示文本
styleSheet:为控件绑定的css样式
icon:图标,可以将图标提前添加入资源文件中
iconsize:图标的大小
text:显示的文本内容
信号:clicked,点击后触发
	  pressed,按钮按下后触发
	  released,按钮弹起时触发
	  优先级:pressed  》 released  》  clicked

2、LineEdit:单行文本框

它的基本方法如下:

text:文本框内容,后台通过setText()来设置
echoMode:Password,更改文本框为密码框
placeholderText:默认提示的内容
maxLength:限制输入的长度
	ui->单行文本框控件对象->setPlaceholderText("默认显示的内容"):设置默认显示的内容 
	ui->单行文本框控件对象->setEchoMode(QLineEdit::Password):更改文本框为密码框
信号:
	textChanged:当文本框内容改变时触发
	textEdited:当通过setText函数改变时触发
	cursorPositionChanged:当光标位置发生改变时
	returnPressed:当Return或Enter键被按下时触发

3、RadioButton:单选按钮

text:显示的文本内容
checked:是否被选中
	ui->单选按钮控件对象->setChecked(bool):设置按钮是否被选中
	ui->单选按钮控件对象->isChecked():获取按钮是否被选中
	默认情况下RadioButton在同一个界面中被分为了一组,所以只会有一个按钮能够被选中,可以通过GroupBox控件,将指定的按钮分为一组
信号:同pushButton

4、CheckBox:复选框

text:显示的文本内容
checked:是否被选中
同RadioButton,只是一个是单选,一个是多选
信号:stateChanged:复选框选中状态改变时触发
	其他同pushButton

5、CommandLinkButton:命令连接按钮

继承自pushButton,不同的是CommandLinkButton设计为扁平化的,可以显示两行文本内容,带有默认的icon

text:第一行标题内容
description:第二行描述文本内容

6、ListWidget:列表

右击编辑项目,可以添加每一项

currentRow:默认选中的项,-1表示不选中
常用后台属性方法:
	添加项:
		ui->列表控件->addItem("显示的文本内容");
		QListWidgetItem *item = new QListWidgetItem(QIcon("图标路径"),"显示文本");
		ui->列表控件->addItem(item);
		ui->列表控件->insertItem(row,"显示的文本内容");
		QListWidgetItem *item = new QListWidgetItem(QIcon("图标路径"),"显示文本");
		ui->列表控件->insertItem(row,item);
					
	删除项:
		ui->列表控件->clear() :清除所有项
		ui->列表控件->takeItem(row):删除指定行的项
	
	其他:
		ui->列表控件->count():获取项的总和
		ui->列表控件->currentRow():返回当前选中行的行号
		ui->列表控件->currentItem():返回当前选中项对象
	
	信号:
		1.currentItemChanged(QListWidgetItem current, QListWidgetItem previous)信号:
		当列表部件中的当前项发生变化时发射,带两个参数,分别表示当前选择项和在此之前的选择项。
					
		2.currentRowChanged(int currentRow)信号:
		当列表部件中的当前项发生变化时发射,带一个参数,currentRow表示当前项行号,如果没有当前项,其值为-13.currentTextChanged(str currentText):
		当列表部件中的当前项发生变化时发射,带一个参数,currentText为当前项对应文本。
					
		4.itemClicked(QListWidgetItem *item):
		当部件中的项被鼠标单击时发射该信号。
					
		5.itemDoubleClicked(QListWidgetItem *item):
		当部件中的项被鼠标双击时发射该信号。
					

7、TreeWidget:树状表

右击编辑项目,可以设置列名称,项目栏中可以添加一级节点、二级节点…

添加项:
	TreeWiget是整个控件,QTreeWigetItem是里面的每个节点项
	ui->树状表控件.setHeaderHidden(true);  //隐藏表头
				
	QTreeWidgetItem *item = new QTreeWidgetItem(QStringList()<<"第一列显示的文本"<<"第二列显示的文本");
	ui->树状表控件->addTopLevelItem(item):
	控件添加顶级节点
				
	ui->树状表控件->topLevelItem(索引):
	获取到指定索引的顶级Item,是一个QTreeWidgetItem对象
	ui->树状表控件->takeTopLevelItem(索引):
	移除指定索引的顶级item
	ui->树状表控件->currentItem():
	获取到当前选中的Item,若没有则为空,若有选中的返回一个QTreeWidgetItem对象
				
	QTreeWidgetItem对象有一个addChild(QTreeWidgetItem *)的方法用于添加其子节点
	child(索引):获取指定索引的子节点
	setExpanded(bool):是否展开节点
	takeChild(索引):移除指定索引的节点
	text(索引):获取到指定item的指定列的文本数据
	
信号:
	1.currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)信号:
	当列表部件中的当前项发生变化时发射,带两个参数,分别表示当前选择项和在此之前的选择项。
				
	2.itemExpanded(QTreeWidgetItem *current):
	选项展开时执行触发
					
	3.itemDoubleClicked(QTreeWidgetItem *current):
	当选项被双击时触发

8、TableWidget:表格

ui->表格控件->setRowCount(行数):设置表格的总行数
ui->表格控件->setColumnCount(列数):设置表格的列数
ui->表格控件->setHorizontalHeaderLabels(QStringList):根据QStringList指定的数据设置列标题名称
ui->表格控件->setVerticalHeaderLabels(QStringList):根据QStringList指定的数据设置行标题名称
ui->表格控件->setItem(,,new QTableWidgetItem("数据")):设置表中单元格的数据
ui->表格控件->setEditTriggers(QAbstractItemView::NoEditTriggers):禁止修改表中的数据
ui->表格控件->setSelectionBehavior(QAbstractItemView::SelectRows):选中方式为整行选中
ui->表格控件->verticalHeader()->setVisible(false):隐藏列表头
ui->表格控件->horizontalHeader()->setVisible(false):隐藏行表头
ui->表格控件->setCellWidget(,,控件对象):将一个控件对象添加进单元格中
ui->表格控件->item(,):获取到指定行列的单元格对象
ui->表格控件->item(,)->text():获取到指定行列中的数据
ui->表格控件->removeRow(行数):删除掉指定的行
ui->表格控件->currentRow():获取到选中行的索引
ui->表格控件->item(,)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter):

设置指定单元格中文本显示的对齐方式
	水平对齐:
		     Qt::AlignLeft:左对齐
			 Qt::AlignRight:右对齐
			 Qt::AlignHCenter:居中对齐
			 Qt::AlignJustify :在可用控件中对齐
					
	垂直对齐:	
			 Qt::AlignTop :上对齐
			 Qt::AlignBottom :下对齐
			 Qt::AlignVCenter :居中对齐
					
	若两个都要用就:Qt::AlignHCenter|Qt::AlignVCenter即可
			
			
ui->表格控件->setSpan(要合并的行,要合并的列, 合并的行数,合并的列数):合并单元格
ui->表格控件->setColumnWidth(,宽度):设置某列的宽度
ui->表格控件->setRowHeight(,高度):设置某行的高度
ui->表格控件->resizeColumnsToContents():设置列大小由内容决定
ui->表格控件->resizeRowsToContents():设置行大小由内容决定
			
信号:
	cellChanged(int row,int col):单元格改变时触发,会将触发的单元格索引传入
	cellClicked(int row,int col):单元格被单击时触发,会将触发的单元格索引传入
	cellDouble(int row,int col):单元格被双击时触发,会将触发的单元格索引传入

9、tabWidget:选项卡

ui->选项卡控件->setTabPosition(QTabWidget::North):设置标题的方向
				QTabWidget::North:北方
				QTabWidget::West:西方
				QTabWidget::South:南方
				QTabWidget::East:东方
				
ui->选项卡控件->addTab(new QWidget(this),QIcon("icon路径"),"选项卡名称"):添加新的选项卡
	第一个参数可以是新对象,也可以是一个新建的QWidget实例对象
			
ui->选项卡控件->clear():清除所有的选项卡
ui->选项卡控件->removeTab(索引):移除指定索引的选项卡
				
信号:
	currentChanged(int):当前选项更改时触发
	tabBarClicked(int):选项被点击时触发
	tabBarDoubleClicked(int):选项被双击时触发

10、comboBox:下拉框

ui->下拉框控件->addItem("显示文本",绑定的数据):添加选项到下拉框中
ui->下拉框控件->currentText():获取下拉框当前选中项的文本
ui->下拉框控件->currentData():获取下拉框当前选中项的数据
			
信号:
	currentIndexChanged(int index):当前下拉选项发生改变时触发

11、textEdit:富文本框

ui->富文本框控件->append("文本内容"):追加内容到文本框中
ui->富文本框控件->setAlignment(Qt::AlignRight):设置上一行文本内容的对齐方式
				Qt::AlignRight:右对齐
				Qt::AlignLeft:左对齐
				Qt::AlignCenter:居中对齐
ui->富文本框控件->setReadOnly(bool):是否只读
ui->富文本框控件->toPlainText():获取文本框中的内容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT教程:基本控件及相关类的介绍和使用 的相关文章

  • 删除 QComboBox“下拉”动画

    我正在使用 Qt 4 8 并且想在单击 QComboBox 时摆脱 下拉 动画 我也想稍微移动一下 到目前为止 我一直在考虑重新实现 showPopup 和 hidePopup 但不知道如何使其工作 此外 每次我尝试使用 CSS 进行移动或
  • Qt、PushButton、id 属性?有什么方法可以知道点击了哪个按钮

    void MainWindow addRadioToUI int button cunter 4 while database isEmpty button cunter QPushButton one new QPushButton Pl
  • QT 应用程序运行时错误?

    我已经在 Windows 7 的 Qt5 1 上开发了一个应用程序 现在我想分发它 由于我使用了 MINGW 编译器 因此无法静态构建它 我使用dependency walker找出所有dll并打包 当我在未安装 QT 开发环境的计算机上运
  • QT 中的应用程序->处理消息?

    在 Borland 6 中 我经常使用它来解除程序操作的卡住 Application gt Processmessages 现在 对于 QT 4 8 1 我在这个外国 对我来说 QT 文档中找不到 谁能帮我 在 Qt 中 您可以使用静态函数
  • 如何恢复 QSS 属性的默认系统值?

    如果父级之一将其样式表设置为 Qt QSS 会传播给子级color red 它的所有子级都将应用此样式表 如果你明确设置QLabel color red 那么只有 QLabel 子项会受到关注 如果子项设置自己的值 则可以覆盖子项的样式表c
  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • QTableView 中的虚拟列?

    我开始学习 Qt4 模型 视图编程 我有初学者问题 我有一个简单的应用程序 其中显示 sqlite 表QTableView class Model QtSql QSqlTableModel def init self parent None
  • MAC 上的 QT/C++ - 未设置应用程序图标

    我正在努力解决的奇怪问题 在与我的 pro QT 项目文件相同的文件夹中 我有一个 Resources myIcon png 我试图将其设置为我构建的应用程序的图标 在 OSX 上运行 我阅读了文档 它建议在 pro 文件中添加 ICON
  • 为什么下面的重叠比较总是评估为 true

    我不明白为什么以下代码有警告 指出重叠比较始终评估为真 接下来的语句永远不会被执行 QVariant MainModel data const QModelIndex index int role const if index isVali
  • 如何在 Qt-Embedded 中(正确)输出多语言文本?

    我的目标系统是 linux 3 3 7 Qt Embedded 开源版 4 8 Droid 字体 取自 fonts droid 20111207 git 1 all deb Debian 软件包并复制到 usr lib fonts目录 主要
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • 如何创建QWidget的屏幕截图?

    我在 Qt Creator 中做作业 在其中绘制 QWidget 并且需要保存此 QWdiget 的某些部分 我试图解决这个问题 QPixmap pixmap pixmap copy rectangle rectangle is part
  • 如何在带有预编译头的项目中使用google protobuf

    我有一个包含多个项目的解决方案 我的项目 但不是全部 使用预编译头 我决定使用 protobuf 但遇到了一个问题 在 protoc exe 从 proto 生成 pb h 后 我尝试包含标头并收到错误 预编译标头未包含在 pb h 中 我
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 从布局中按名称获取小部件

    如果我想从 python Qt 的布局中获取特定的小部件 我应该如何进行 到目前为止我所做的 for i in range self ui horizontalLayout 14 count here it does fail name s
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • Qt 文件对话框默认后缀不起作用

    我将以下代码用于 QtQuick Dialogs 1 3 和 Qt 5 10 0 下 filedialog 的新属性 我使用 Qt Creator 5 10 默认套件构建它 import QtQuick 2 10 import QtQuic
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错

随机推荐

  • wallhaven.cc网站图片超清壁纸爬虫

    测试时间 2021 02 16 1 参考博客 2 python代码 1 参考博客 From 侵删 https blog csdn net qq 41849471 article details 89607706 2 python代码 图片保
  • python search用法,Python-re中search()函数的用法详解(查找ip)

    1 首先来看一下search 和find 的区别 import re s1 2221155 search 字符串第一次出现的位置 print re search 1 s1 print s1 find 1 它们的输出分别是 search 函数
  • 苹果系统itunes连iphone连不上服务器,itunes不识别iphone,iPhone连接不上iTunes怎么解决?连接不上iTunes怎么办?...

    今天一网友求助 itunes不识别iphone iPhone手机插上电脑后可以弹出设备 在电脑里面可以显示并能打开手机的相册 怎么样iphone也连不上iTunes 而换另外的一个iPhone连接又很正常 iPhone连接不上iTunes怎
  • 6-17 使用函数实现字符串部分复制 (20 分)

    6 17 使用函数实现字符串部分复制 20 分 本题要求编写函数 将输入字符串t中从第m个字符开始的全部字符复制到字符串s中 函数接口定义 void strmcpy char t int m char s 裁判测试程序样例 include
  • 使用JSONP解决跨域

    1 首先需要知道什么是跨域 浏览器从一个域名的网页去请求另一个域名的资源时 域名 端口 协议任一不同 都是跨域 出于浏览器的同源策略限制 同源策略 Sameoriginpolicy 是一种约定 它是浏览器最核心也最基本的安全功能 如果缺少了
  • c语言中auto、register、extern、static用法

    转载地址 http www 111cn net net c 38998 htm 四种存储类别说明符有两种存储期 自动存储期和静态存储期 auto和register对应自动存储期 具有自动存储期的变量在进入声明该变量的程序块是被建立 它在该程
  • 删除system/app下的apk

    要删除系统system app目录下的的APK 由于 system app目录默认是只读 所以 想要删除这些APK 必须首先获得system目录的删除权限 通过如下步骤删除system app下的apk文件 1 连接设备 如果是手机则需要打
  • Linux 基础笔记 权限与文件管理

    Linux 基础笔记 权限与文件管理 字符界面中退出登录可用哪种方法 exit 命令或 Ctrl D 组合键 pwd命令的功能是什么 显示当前目录的绝对路径 当前目录为 home 使用以下哪个命令后可进入 home Studd test目录
  • React中常见的TypeScript定义使用

    前言 在我学习typescript时 想在react中使用typescript写代码 从头开始的时候是懵逼的 因为官方文档并没有使用typescript的教程 多是自己在网上查 自己看定义摸索 所以今天把我用过的 总结归纳一下 希望能帮助到
  • MySQL查询合并结果去重_MySQL数据表合并去重的简单实现方法

    场景 爬取的数据生成数据表 结构与另一个主表相同 需要进行合并 去重 解决 直接举例 首先创建两个表pep pep2 其中pep是主表 CREATE TABLE IF NOT EXISTS pep pep2 id INT UNSIGNED
  • 「从零开始造 RPC 轮子系列」01 我为什么要去造一个轮子?

    目录 好日子 为什么你需要学习造轮子 投资自己 不要成为调包侠 通过造轮子你能学到什么 下一步计划 好日子 宣布一件事情 好日子 12月有个好日子 20211202 从左往右读 接着从右往左读你会发现居然是对称的 这是属于程序员的 浪漫 身
  • android系统网络管理,详解安全管家Android平台上网管理功能

    Android系统在这几年忽然兴起 并成为如今最受欢迎的智能手机操作系统 却始终没有能够很好地对自身的上网管理功能做出很好的优化 小编也和很多人一样 是Symbian转战Android的 而作为一名伪资深智能手机用户 当感受到Android
  • C语言的union联合体,可实现不同类型数据的转换

    结构体和共用体的区别在于 结构体的各个成员会占用不同的内存 互相之间没有影响 而共用体的所有成员占用同一段内存 修改一个成员会影响其余所有成员 结构体占用的内存大于等于所有成员占用的内存的总和 成员之间可能会存在缝隙 共用体占用的内存等于最
  • python pd pandas.cut 出现 NAN的问题

    原因 pandas cut 设置lebel的时候是 0 n 只包含n不包含0 解决方法 重新设置一个lebel 使其包含特殊的格式 产生问题的例子 源代码 d2 pd cut DaysList bins 0 1700 1800 1900 2
  • 最新AI系统ChatGPT源码+支持OpenAI全模型+国内AI模型+AI绘画

    一 SparkAI智能创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统 本期针对源码系统整体测试下来非常完美 可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统 那么如何搭建部
  • Linux新手入门必须学会的相关知识

    Linux新手入门必须学会的相关知识 Linux基本知识 1 Linux基本介绍 Linux是什么 Linux的诞生过程 Linux内核与Linux内核发行版 常见的Linux发行版 2 Linux基础安全介绍 SSH登录方式介绍 SSH基
  • 嵌入式系统开发入门(一)

    1 开发工具概览 1 1硬件 1 1 1开发平台 基础系统 树莓派raspberry 选用4B版本 单片机系统 arduino 进阶系统 JETSON nano 1 1 2 配件 摄像头 开发板专用摄像头 树莓派 JETSON nano
  • python代码~满屏小练习

    完整代码如下 import tkinter as tk import random import threading import time def boom window tk Tk width window winfo screenwi
  • debian 11搭建ftp

    配置本地用户 创建用户 adduser user1 编辑配置文件 vim etc vsftpd conf grep v listen yes local enable YES 本地用户登陆限制 write enable YES 本地用户写权
  • QT教程:基本控件及相关类的介绍和使用

    一 QString类 Qt提供了自己的字符串处理类 不用担心内存分配以及关于 0结尾的这些注意事项 QSting会自动对占用的内存进行扩充 链接非常的迅速 实例 QString str hello str world 拼接字符串操作 对象函