控件---Widget
内置控件包罗按钮,文本框,单选按钮,复选按钮,下拉框等都是控件
Qt Designer中表现了内置控件:
最早的GUI开发,是没有控件概念,界面上表现的对象全部是通过API“画”出来的
随着时代的发展,,才出现越来越多的控件
QtDesigner中展示的控件都是默认的样子,可以通过优化手段进行优化,还提供了Qt Designer Studio制作界面
Qt中的各种控件都是继续自QWidget类----Qt控件体系中通用的部分
可以在Qt Designer中查看其属性
焦点属性相识
enable
enabled:形貌一个控件是否处于可用状态,true表示可用,false表示禁用
所谓禁用指的是该控件不能吸收任何用户的输入事件,并且表面上往往是灰色
如果一个widget被禁用,则该widget的子元素也被禁用
相关APT接口
isEnabled() 获取控件的可用状态
setEnabled 设置控件是否可用,true表示可用,false表示禁用
示例:
未关联槽函数时,点击按钮无反应
关联槽函数后,点击按钮也无反应
此处是在创建按钮时进行禁用,也可以通过其它按钮来设置这个按钮的可用状态
通过pushButton_2来控制pushButton可用状态
转到槽函数
实现一个按钮控制另一个按钮的可用状态
geometry
geometry----几何,视为四个属性的统称:x,y,width,height
当前控件的位置和尺寸
相关接口:
geometry()
获取控件的位置和尺寸,返回结果为QRect,包含x,y,width,heigth,其中x,y是控件左上角的坐标
setGeometry(QRect)或setGeometry(int x,int y,int width, int height)
设置控件的位置和尺寸,可用直接设置一个QRect,也可以分为四个属性单独设置
如:
先在ui界面创建按钮
再创建一组按钮,模仿方向键,将其objectname修改为其方向
实现通过点击这4个方向按钮移动button
设置up的槽函数键控制pushbutton向上移动
可用看到pushbutton当前的x,y坐标,和控件巨细
在通过setY(rect.y()+5)来改变其y坐标,使rect中y向上移动
最后将rect设置进pushbutton
但是此时发现点击按钮只能实现按钮的高度和长宽的改变,而不能实现按键的整体移动
由于代码中只对pushbutton左上角位置的x,y进行修改,左上角改变的同时修改了pushbutton的高度和宽度
实现平移---保证pushbutton尺寸不变
通过geometry的第二个函数
setGeometry(int x,int y,int width, int height)
传参时不改变weidth和height,只改变x,y
如up向上平移,只将原来的rect.y()-5向上移动,别的不变
从而实现pushlbutton控件的平移
通过移动控件,实现一个“不会被点击到”的按钮
在ui界面设置一个label和两个button控件
转到“是的”控件的槽函数,设置点击后将labe“你的选择”修改为选择正确
设置“不是”控件的槽函数,通过修改geomety实现点击按钮,按钮移动,从而实现一个”无法被点击到的按钮“
先实现获得随机种子
通过随机种子天生随机数得到x,y,进行控件移动
从而实现一个”无法被点击到“的按钮
但现实上是已近点击后按钮才进行移动,现实照旧进行了点击,可用通过修改移动控件槽函数的触发信号,只要鼠标移动到控件上就进行移动,实现真正的无法点击的控件
需要使用到Qt中的事件机制
window frame
window frame是窗口框架
也就是ui界面的四边
是操纵体系自带的,可用通过api去掉
那控件的x,y坐标是以拿个点作为原点,是window frame的左上角照旧,ui界面的左上角?
不同的api的原点不同,既大概是window frame的左上角,也大概是ui界面的左上角
其中geometry()和setgeometry()都不考虑window frame
如果用frameGeometry(),pos()就考虑window frame
实例:
打印widget控件的geometry属性和frameGeometry属性
发现结果是一样的
由于当前是在构造函数中进行qDbug输出,而widget对象在构造函数中被构造,qDebug时,还未构造好,还没有被参加到window frame中,因此还不能看到geometry属性和frameGeometry属性的区别
通过添加一个按钮,在构造widget完成后,点击按钮,通过按钮连接的槽函数打印widget的geometry属性和frameGeometry属性
此时就能看到geometry属性和frameGeometry属性的区别
windowTitle
windowTitle 窗口标题
当前windowTiele属性属于QWidget,只能针对顶层窗口控件---widget才有效
相关接口:
setWindowTitle()
设置窗口标题
例:
windowTitle()
获取窗口标题
例:
windowIcon
windowIcon 窗口图标----与windowTitle同等,只能针对顶层窗口使用
相关接口:
windowIcon() 获取控件的窗口图标,返回QIcon对象
setWindowIcon(const QIcon& icon) 设置控件的窗口图标
使用方法:
先预备一张图片,保存,并获取图片路径,设置进QIcon,将QIcon设置进widget
但是此时是通过绝对路径加载图片,若图片位置发送变革,就无法替换乐成。
通过相对路径进行替换,将程序和图片包装起来,但是图片若被删除或修改照旧大概导致替换失败
Qt还提供qrc机制
从根本上解决图片路径在用户机器上不存在和图片被删除的题目
qrc机制
给Qt项目引入一个额外的xml文件(后缀名为.qrc)
在这个xml文件中把要使用的图片资源导入,并在xml中进行记录,qt在编辑项目时,更具qrc中形貌的图片信息,找到图片内容,提取图片的二进制数据,将二进制数据转换成c++代码,最终编译到可执行程序exe中,只要能执行程序,就能将图片替换乐成
缺点:qrc无法导入太大的资源文件
例:
在新建文件中选择qt,resource file
得到一个文件,表现资源文件可视化界面
先创建一个前缀---捏造的目次
这个目次不是真实存在的,而是Qt自己抽象出来的
qrc机制本质就是把图片的二进制数据转换成c++代码(在代码中看到很大的char数组----图片的二进制数据)
为了便于qt进行访问,以是抽象出捏造目次
将/new/prefix1改为/
导入图片到资源文件中
导入图片时,要确保图片必须在resource.qrc文件的同级目次,或resource.qrc文件同级目次下的子目次中
将图片拷贝到当前目次中
选中图片后
点击复制,找到存放qrc文件的目次
选择保存,就能导入乐成
以:的方式直接访问文件\\表示\,也可用:/QQ20250414-164106.jpg
windowOpacity
windowOpacity 窗口不透明度
相关接口:
windowOpacity()
获取到控件的不透明数值,返回float,取值为0.0->1.0,其中0.0表示全透明,1.0表示完全不透明
setWindowOpacity(float n)
设置窗口透明度
例:
在ui界面设置2个按钮,通过这两个按钮,实现一个增长窗口不透明度,一个淘汰窗口的不透明度
界说增长/淘汰透明度的槽函数
实现修改窗口不透明度
但是窗口的不透明度变革不是准确的
此处涉及到浮点数float类型在内存中的存储
IEEE 754标准规定了浮点数要使用二进制科学计数法的方式来表示
把一个浮点数分成三个部分
- 符号位
- 有效数字----二进制表示,都是小于0的小数部分,第一个为0.5,第二个为0.25,第三个为0.125等
3.指数部分
由于这种表示方式,难以准确表示一个小数,由于float和double的有效数字部分长度都是有效的以是难以表示一个准确的小数
若不透明度的值超过1.0或低于0.0,就无法进行增长或淘汰,就算进行增长或淘汰也无法设置进去
cursor
cursor 鼠标光标样式
相关接口:
cursor() 获取当前widget的cursor属性,返回QCursor对象,当鼠标悬停的该widget上时,就会表现出对应的外形
setCursor(const QCursor& cursor)
设置该widget光标的外形,仅在鼠标停顿在该widget上时生效
QGuiAppliaction::setOverrideCursor(const & QCursor& cursor)
设置全局光标的外形,对整个程序中的所有widget都生效,覆盖上面通过setCursor设置的内容
例:
设置一个按钮,界说他的槽函数
从而实现点击按钮后,在按钮区域光标图样改变
实现通过图片自界说光标
先预备一张图片,将图片导入.qrc文件---qrc机制,通过图片构造光标对象,将光标对象设置进控件
从而实现自界说光标
也可以对自界说光标的图片进行缩放,不是修改图片自己,而是拷贝一份后进行修改,返回修改后的对象
font
font 字体属性
相关接口
font()
获取当前widget的字体信息,返回QFont对象
setFont(const QFont& font)
设置当前widget的字体信息
QFont相关属性
可用在Qt Designer ui界面进行实时修改
例:
创建一个按钮,实现点击按钮修改文本属性
界说按钮的槽函数,通过按钮修改按钮的font属性
toolTip
toolTip 控件提示
相关接口
toolTip()
获取toolTip提示内容
setToolTip()
设置toolTip提示内容,鼠标悬停在该widget上时会有提示阐明
setToolTipDuration()
设置toolTip提示的时间,单元为ms,时间到后toolTip主动消散,单元时毫秒
例:
创建两个按钮,点击其中一个后设置另一个按钮的toolTip提示内容
focusPolicy
focusPolicy 设置控件获取到焦点的策略
所谓“焦点”,对于键盘操纵非常显着
如:
这样一个输入框,如果未选中,键盘的输入不会输入到输入框
只有在选中之后,键盘的输入才会输入到输入框
GUI中控件的焦点时非常关键的,哪个控件获得了焦点,就是对哪个控件进行操纵
相关接口
focurPolicy()
获取该widget的focusPolicy,返回Qt::FoucsPolicy
setFocusPolicy(Qt::FocusPolicy policy)
设置widget的focusPolicy
Qt::FocusPolicy是一个枚举类型,取值如下
Qt::NoFocus:控件不会吸收键盘焦点
Qt::TabFocus:控件可用通过Tab键吸收焦点
Qt::ClickFocus:控件在鼠标点击时吸收焦点
Qt::StrongFocus:控件可用通过Tab键和鼠标点击吸收焦点(默认值)
Qt::WheelFocus:雷同于Qt::StrongFocus,同时控件也通过鼠标滚轮获取到焦点
例:
创建四个line edit行文本编辑框,实现不同的焦点策略
运行后,可以通过鼠标点击或table键来切换焦点---默认焦点策略
在构造函数分别设置焦点策略
实现不同的焦点策略
styleSheet
styleSheet 通过css设置widget的样式
CSS自己是属于网页前端技术,主要是用来形貌界面的样式
Qt固然是GUI开发,但现实上和网页前端有很多雷同之处,因此Qt也引入对于CSS的支持
例:
在ui界面创建一个label,查看其属性找到styleSheet
设置label中文字的样式
文字家族(字体)为:微软雅黑
文字巨细为:40像素
文字风格为:斜体
文字颜色为:绿色
能够在允许前进行实时表现
实现通过按钮的槽函数修改文字样式,使文字有夜间模式和日间模式
创建一个plain text edit 用于存放文字,两个按钮实现文字模式切换
转到两个按钮的槽函数clicked()
初始:
输入一串1
日间模式:
夜间模式:
widget初始情况下的背景颜色并不是纯白色,而是淡灰色
色号为#F0F0F0
玄色为#000000
白色为#FFFFFF
计算机中的颜色---rgb
red green blue 红绿蓝
第一种表达方式为十进制
rgb(255,0,255) ----3个数字分别表示红蓝绿颜色所占比例,255为一个最大值16*15+15=255
第二种表达方式为16进制
#FF00FF ----每个颜色占两位
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |