当前位置: 首页 > news >正文

QT常用控件(1)

控件是构成QT的基础元素,例如Qwidget也是一个控件,提供了一个‘空’的矩形,我们可以往里面添加内容和处理用户输入,例如:按钮(QpushButton),基础显示控件(Lable),鼠标点击等。快速利用控件开发出需求的界面的重要一步就是学习QT控件的内容,接下来我们开始学习常用控件QWidget及其属性吧。

一,QWidget

QWidget是所有控件间接或者直接的父类,提供了一个空的矩形,我们可以通过对这个矩形的内容以及本身进行开发,实现我们需要的界面,说了这么多,我们先见一下QT的Qwidget界面吧。

没错,这个我们运行后每次都出现的就是Qwidget界面,其他控件都是在QWidget控件上进行开发。点击之后可以在ui界面进行查看,Qwidget的属性有很多,我们介绍和学习一些常用的属性

1,控件启用

enabled:这个代表控件是否启用,如果不启用那么控件就是灰色的,而且我们无法对其进行任何操作,接下来我们看看代码和效果,因为QWidget被禁用了,所有基于其添加的控件自然也无法使用,当然我们也可以通过右侧UI界面的属性进行勾选设置。

可能会有细心的朋友发现很多时候UI设置的属性和代码设置的属性不一样,那么哪一个优先级高呢?取决于widget.cpp里面的构造函数

我们也可以通过Isenable()和setEnable获取,改变控件是否启用的属性。

2,控件位置

在上面的控件属性图里面相信我们也看到了下面这个

这个就是坐标与大小属性,前面两个是x,y坐标(横坐标向左变大,纵坐标向下增大),800x600就是宽和高。那我们该怎么获取这个属性,修改这个属性呢?

首先介绍一下geometry函数

这个函数可以获取控件的位置坐标,以及控件大小长宽,位置坐标的Y轴是向下增长的。0点在左上角,以widget控件为参考系,单位是像素点。

那我们该如何设置控件的坐标呢?我们可以查看qt离线文档

我们可以使用QRectF接收控件坐标和设置控件坐标。QRectF和QRrct可以相互显示和隐式转换,区别在于QRect存储是整形,QRect存储的是浮点数。接下来我们简单使用一下吧

//修改位置前代码    
QPushButton* my_button=new QPushButton(this);my_button->setText("肖涵坤");

//使用按钮控件修改后
void Widget::MoveButton(){
//my_button被我移到widget里面变成了成员变量,方便获取QRect rect=this->my_button->geometry();//注意X,Y是起始位置,width和height是右下角位置,//单独调整X和Y,width和height不会改变,导致控件变小,xy超过width和height时控件直接大小清零不显示了//原因是单独设置X,Y时,width和height坐标不变//下面的效果实际上是平移,下面一行代码设置效果等同rect.setRect(rect.x()+100,rect.y()+100,rect.width(),rect.height());
//    rect.setX(rect.x()+100);
//    rect.setY(rect.y()+100);
//    rect.setWidth(rect.width()+100);
//    rect.setHeight(rect.height()+100);this->my_button->setGeometry(rect);
}

效果:每次点击按钮都会将按钮下右下角移动根号下100*100/2个像素点

二,windowIcon

1,控件作用

windowIcon是用来设置widget窗口图标的,类似于下面谷歌的图标

我们设置窗口,需要先指定一个图片路径作为窗口图标,我们这里先简单的试一下

    QIcon icon("D:\\HuaweiMoveData\\Users\\86182\\Desktop\\学校作业\\love.jpg");this->setWindowIcon(icon);

效果:

我们可以看到两个窗口图片都改变了,但是有一个问题,我们的图片是存储在本地的桌面,如果项目换了一个坏境或者图片丢失这个图片就无法访问会报错了,那我们该怎么办,这就是我接下来要讲的。

2,qrc机制

这个机制原理很简单,实际上就是将文件存储在QT项目的工程目录下面,qrc机制负责帮我们管理这些文件。

qrc机制qrc ⽂件是⼀种XML格式的资源配置⽂件, 它⽤XML记录硬盘上的⽂件和对应的随意指定的资源名称. 应⽤程序通过资源名称来访问这些资源。它可以讲图片等第三方资源以二进制形式写入到可执行文件里面,即使资源丢失也不会影响展示效果,达到了不依赖路径的效果。那qrc如何使用呢?

1,选择新建文件

2,设置qrc名字

3,选择需要qrc的项目

4,添加qrc文件,路径设为/,//可以理解为目录

5,选择添加文件

6,因为文件不在qrc目录及子目录下,会自动复制我们需要手动将文件复制到工程目录下

7,选择保存即可看到这个文件

8,在代码里面使用,注意之前选择的/就是目录

qrc优点:代码稳定,不会出现资源丢失的情况

缺点:如果资源太大,exe文件体积会很大,编译时因为要将大量的资源编译成二进制需要消耗大量时间。

三,windowOpacity

这个控件是设置控件的透明度的,范围是0-1,透明度由小到大。大于1的效果和1差不多,负数效果和0一样,我们可以看一下0.5透明度效果。

四,cursor

这个的意义是鼠标停留时光标的形状,我们可以通过setCusor设置鼠标停留在控件上面的形状。

下面是qt官方提供的光标形状

很抱歉,暂时无法看效果,因为光标截图的时候切走了,不够大家可以自己试试。

    QCursor cursor(Qt::WaitCursor);this->setCursor(cursor);

有时候我们想用本地下载的图片,如唱跳rap打篮球,我们该怎么办呢?我们可以使用下面的构造函数设置,hotX和hotY代表鼠标点击在光标的的那个位置,零点在图片的左上角

还有我们设置的图片可能需要调整大小,我们可以通过下面这个函数调整

这样子我们就实现了自定义鼠标

    QPixmap pip(":/love.jpg");pip=pip.scaled(20,20);QCursor cursor(pip,10,10);this->setCursor(cursor);

五,字体设置

我们可以简单的使用一下

    QFont font("微软雅黑",5,50,true);ui->label->setFont(font);

接下来我们介绍一下里面常用属性

Bold:是否加粗
Capitalization:文本大小写规则
Family:字体样式
pointSize:字体大小,数字越大字体越大
weight:字体的粗细,范围【0-99】
italic:是否倾斜
underline:下划线
strikeOut:删除线

六,toolTip

这个控件的作用是当鼠标悬停在控件上面的时候会有提示,效果如下图

相信这么简单的使用方法就不需要多介绍了,直接将想要提示的文本写入里面就可以了,例如我上面的文本就是设置成了这是一个Label类型

七,foucsPolicy

这个控件的作用和名字一样设置焦点的策略。首先焦点是什么呢?焦点就是能选择这个元素,就想玩电子版象棋,当你点到想要移动的棋子时,它被选中了,就是聚焦了,那焦点可以通过哪几种方法选中呢?一般是tap键,鼠标点击这两种方式。

这上面介绍了五种聚焦模式,也就是选中,上面的value是2的次方,原理类似于位图


Qt::TabFocus    按tap键可以选中
Qt::ClickFocus    通过鼠标点击
Qt::StrongFocus  可以通过所以方式选中
Qt::WheelFocus    可以通过鼠标滚动选中
Qt::NoFocus    无法选中

八,styleSheet

qt里面支持向前端界面一样,使用CSS格式设置属性,就是下面这种形式,不过qt支持的属性比较少称为QSS,大家可能通过离线文档查看每个具体控件支持的属性

上面的代码其实有问题,因为qt的setStyleSheet是进行覆盖设置的,那我们怎么进行追加呢?答案是先使用styleSheet获取原先的QSS,再进行字符串追加实现效果叠加。

注:记得加分号分割哦

九,通过UI界面实现上述效果

qt不仅仅可以通过代码实现控件属性设置,也可以通过UI界面设置,大家可以试试,会了代码设置基本上使用UI界面没有问题

相关文章:

  • metersphere不同域名的参数在链路测试中如何传递?
  • 项目任务,修改svip用户的存储空间。
  • 微博app 最新版本15.5.2 mfp 分析
  • RagFlow优化代码解析(一)
  • 操作系统:生态思政
  • 现代密码学 | 椭圆曲线密码学—附py代码
  • 如何从系统日志中排查磁盘错误?
  • 0518蚂蚁暑期实习上机考试题1:数组操作
  • “轻量应用服务器” vs. “云服务器CVM”:小白入门腾讯云,哪款“云机”更适合你?(场景、配置、价格对比解析)
  • 神经符号集成-三篇综述
  • Docker 镜像(或 Docker 容器)中查找文件命令
  • 2023-2025 时序大模型相关工作汇总
  • 生产环境中安装和配置 Nginx 以部署 Flask 应用的详细指南
  • 架构设计的目标:高内聚、低耦合的本质
  • Cat.1与Cat.4区别及应用场景
  • 【知识点】第4章:程序控制结构
  • 信息过载时,如何筛选重要信息
  • 手写mask|代码详解,TriangularCausalMask/ProbMask/LocalMask
  • 电子电路:全面深入了解晶振的定义、作用及应用
  • 01 RK3568调试4G 模块 EG800AK-CN
  • widgets wordpress怎么建/珠海seo关键词排名
  • 网站管理工作流程/产品推广
  • 东营有做网站的公司/新闻发稿渠道
  • 专题网站建设意义何在/沈阳seo代理计费
  • 网站建设创业计划书模板范文/营销技巧在线完整免费观看
  • 做美图网站有哪些东西/线上推广员是做什么的