首页 > 其他分享 >【QT】常用控件(一)

【QT】常用控件(一)

时间:2024-10-14 21:46:41浏览次数:3  
标签:API 控件 widget QT geometry 常用 Widget ui

在这里插入图片描述

个人主页~


常用控件

一、控件是什么

ui设计界面左边的这些都叫控件,除了这些以外,QT还允许自定义控件,满足不同的需求
在这里插入图片描述

二、QWidget核心属性

1、enabled

API说明
isEnabled获取到控件的可用状态
setEnabled设置控件是否可用

我们来写一个用一个按钮控制另一个按钮可用状态的QT程序

我比较喜欢用ui界面转到槽的方式写QT程序

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_control_clicked()
{
    if(ui->pushButton->isEnabled() == true)
        ui->pushButton->setEnabled(false);
    else
        ui->pushButton->setEnabled(true);
}

void Widget::on_pushButton_clicked()
{
    qDebug() << "可以使用";
}

当将控件设置为不可用时,颜色偏暗淡,不可点击

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="AFrG4v5M-1727880663141" src="https://live.csdn.net/v/embed/427784"></iframe>

enabled

2、geometry

API说明
geometry()获取到控件的位置和尺寸,返回的结果是QRect,包含x,y,width,height,其中x和y是左上角坐标
setGeometry(QRect) / setGeometry(int x,int y,int width,int height)设置空间的位置和尺寸,分为两种方式

geometry在中文里是几何的意思,表示一个物体的几何性质,它有四个参数以表示空间的几何性质,左上角的坐标x,y以及控件的宽度和高度

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="5nWWcNhv-1728008504990" src="https://live.csdn.net/v/embed/427947"></iframe>

geometry_1

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="k153ZfRK-1728008515231" src="https://live.csdn.net/v/embed/427948"></iframe>

geometry_2

第一个视频仅控制左上角坐标,这样会导致width和height跟着变化,因为我们用的是setX和setY,强制改变了左上角坐标
第二个视频的效果也可以直接使用move函数进行控制

这里还有一个有趣的程序

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    ui->label->setText("感谢导员,我出去玩了");
}

void Widget::on_pushButton_2_clicked()
{
    int width = this->geometry().width();
    //获取窗口宽度
    int height = this->geometry().height();
    //获取窗口高度
    int x = rand() % width;
    int y = rand() % height;
    //保证按钮在窗口内

    //这里用的move
    ui->pushButton_2->move(x, y);

}

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="6taF9GUV-1728008551476" src="https://live.csdn.net/v/embed/427949"></iframe>

geometry_3

我们知道,窗口都会带有下面红色方框中的内容,这个东西叫做window frame,我们在使用geometry的时候的x,y是不包含这个的,要想使用window frame的左上角就要用frameGeometry这个函数
在这里插入图片描述
通过geometry和frameGeometry就可以实现整个窗口以及控件的移动操作,但是我们有很多的API,虽然设计的比较冗余,但是QT一个特点就是尽量符合人的直觉,就是我们有可能不用通过官方文档就能把程序写对

3、windowTitle

API说明
windowTitle获取到控件的窗口标题
setWindowTitle(const QString& title)设置控件的窗口标题

在这里插入图片描述

4、windowIcon

API说明
windowIcon()获取到控件的窗口图标,返回QIcon对象
setWindowIcon(const QIcon& icon)设置控件的窗口图标

在这里插入图片描述
在这里插入图片描述
窗口和任务栏图标都会变成设置成的照片

但是我们一般不会通过文件的绝对路径引入照片,因为我们无法保证我D盘中的图片在你的D盘当中也有,我们还有两种办法,一种是相对路径,另一种是使用qrc,相对路径的方法就是在该项目的工作目录中建一个新的文件夹用来专门存放图片,比如文件夹的名字叫做photo,当我们需要使用时写"./photo/slm.jpg",但是这样的话还是会因为用户误删而导致照片无法使用,这时对于这种图片一类的小文件,我们可以使用qrc来直接将图片转化为二进制代码存储在项目当中,这样就永远不会丢失了

右键点击Add New,选择Qt resource file,起一个英文名字,这里叫resource file
在这里插入图片描述

在这里插入图片描述
点击Add Prefix,将前缀改为/
在这里插入图片描述
然后点击Add Files,将要加入的图片放到qrc文件的同级目录中,下面是添加完毕的效果
在这里插入图片描述
在代码中这样使用:
在这里插入图片描述
这里的 : 作为开头,表示从qrc中读取资源
这里的 / 是上面配置的前缀
这里的 slm.jpg 是资源名称

qrc适合管理小的资源,对图片类的很有效,不过对于视频一类的大资源是不行的,因为这会导致exe文件也变大

5、windowOpacity

API说明
windowOpacity()获取到控件的不透明数值,返回float,取值为0.0~1.0,0.0表示透明,1.0表示完全不透明
setWindowOpacity(float n)设置控件的不透明数值

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="9G2Io7vu-1728008590563" src="https://live.csdn.net/v/embed/427952"></iframe>

opacity_1

6、cursor

API说明
cursor()获取到当前widget的cursor属性,返回QCursor对象,当鼠标悬停在该widget上时,就会显示出对应的形状
setCursor(const QCursor& cursor)设置该widget光标的形状,仅在鼠标停留在该widget上时生效
QGuiApplication::setOverrideCursor(const QCursor& cursor)设置全局光标的形状,对整个程序中的所有widget都会生效,覆盖上面的setCursor设置的内容

我们可以直接通过属性栏来控制,也可以使用代码控制
在这里插入图片描述

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="9sepRvpw-1728008615509" src="https://live.csdn.net/v/embed/427950"></iframe>

cursor_1

代码版本:
在这里插入图片描述

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="qmj6nTaj-1728008628261" src="https://live.csdn.net/v/embed/427951"></iframe>

cursor_2

这是系统内置的所有光标形状,是以一个枚举体来存储的
在这里插入图片描述
我们来将光标改变为自定义图片

首先使用qrc将图片加载进去,步骤如同上文,不再赘述,然后定义一个位图对象加载并缩放图片,然后将图片设置为光标形状

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPixmap pixmap(":/slm.jpg");//创建位图对象并加载自定义图片

    pixmap = pixmap.scaled(32,32);//缩放图片为32*32

    QCursor cursor(pixmap,3,3);//这里的3,3是热点的位置,也就是点击时的有效位置

    this->setCursor(cursor);
}

Widget::~Widget()
{
    delete ui;
}

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="oQxG9EHK-1728008636788" src="https://live.csdn.net/v/embed/427955"></iframe>

cursor

7、font

API说明
font()获取当前widget的字体信息,返回QFont对象
setFont(const QFont& font)设置当前widget字体信息

这里的QFont有七种属性
family:字体
pointSize:字体大小
weight:字体粗细
bold:是否加粗
italic:是否倾斜
underline:是否有下划线
strikeOut:是否有删除线

我们可以通过属性面板直接设置
在这里插入图片描述
也可以通过代码和ui一起实现
在这里插入图片描述

8、toolTip

API说明
setToolTip设置toolTip,鼠标悬停时会有提示说明
setToolTipDuring设置toolTip提示的时间

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="qcsvshiW-1728008644565" src="https://live.csdn.net/v/embed/427956"></iframe>

toolTip

9、focusPolicy

API说明
focusPolicy()获取该widget的focusPolicy,返回Qt::FocusPolicy
setFocusPolicy(Qt::FocusPolicy)设置widget的focusPolicy

Qt::FocusPolicy是一个枚举类型,取值如下
在这里插入图片描述

enum FocusPolicy {
        NoFocus = 0,//控件不会接收键盘焦点
        TabFocus = 0x1,//控件可以通过Tab键接收焦点
        ClickFocus = 0x2,//控件在鼠标点击时接收焦点
        StrongFocus = TabFocus | ClickFocus | 0x8,//控件可以通过Tab键和鼠标点击接收焦点(默认)
        WheelFocus = StrongFocus | 0x4//在上一条的基础上增加鼠标滚轮获取焦点
    };

这个就不必多说了,只要是平常玩玩电脑的看完这些解释都就知道这个焦点的概念,虽然不好说出来,但是抽象的概念大家都是有的,当我们给控件设置这些枚举值时会达到对应的效果

10、styleSheet

通过QSS设置widget的样式,QSS是QT借鉴CSS的,只支持CSS其中的一部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然这里的color不是只有我们认识的那几个单词的颜色,自然界的颜色有无数种,在计算机中,颜色是由一个个像素光点显示的,它通过RGB,也就是red,green,blue三种颜色的深浅来控制可以形成所有的颜色,对于8位深度的显示器来说,它们每一个颜色深度都是由一个字节来存储的,也就是说电脑能够呈现的颜色有256256256种,也就是1600多万种,对于更高规格的显示器这个数字会更多


今日分享就到这~

在这里插入图片描述

标签:API,控件,widget,QT,geometry,常用,Widget,ui
From: https://blog.csdn.net/s_little_monster/article/details/142623125

相关文章

  • Mybatis的Mapper映射文件中常用标签
    "mapper":是整个映射文件的根元素,包含了所有的其他标签,有一个重要的属性:namespace,用来指定映射文件对应的接口的全限定名,保证多个映射文件中使用相同的ID不会产生冲突,因为每个ID都是基于其命名空间唯一的点击查看代码<mappernamespace="com.example.mapper.Use......
  • 【qt】一个动画实现
    基于https://www.bilibili.com/video/BV1Li421Y7EH/?spm_id_from=333.999.top_right_bar_window_history.content.click原理的一个qt实现#pragmaonce#include<QWidget>#include"ui_Worm.h"#include<QPointF>#include<QList>#include<QPai......
  • Mybatis的Mapper映射文件中常用标签及作用
    MyBatis的Mapper映射文件是一种XML格式的配置文件,它用于定义SQL语句和Java对象之间的映射关系。以下是一些常用的标签及其作用。!DOCTYPEmapperPUBLIC#定义文档类型和公共标识符,用于XML文档的开头。<mapper>#根标签,定义一个映射文件。<namespace>#定义映射文件的命......
  • Mybatis的Mapper映射文件中常用标签及作用
    1、<mapper>:根元素,表示一个Mapper接口的配置。2、<select>:用于编写sql查询语句。3、<insert>:用于编写sql插入数据的<details>4、<update>:用于编写sql更新数据的语句。5、<delete>:用于编写sql删除数据的语句。6、<resultMap>:定义了如何将数据库中的列与Java对象的属......
  • Mybatis的Mapper映射文件中常用标签
    select点击查看代码<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"time......
  • Mybatis的Mapper映射文件中常用标签及作用
    MyBatis是一个广泛使用的持久层框架,能够将对象与数据库中的记录进行映射。在MyBatis的Mapper映射文件中,有许多常用标签,它们各自有不同的功能。以下是一些常见标签及其作用:1.select标签作用:用来定义查询操作。示例:点击查看代码<selectid="selectUser"resultType="Use......
  • Mybatis的Mapper映射文件中常用标签及作用
    mapper标签作用:根标签,用于定义一个Mapper文件。属性:namespace,指定Mapper接口的全限定名。select标签作用:定义一个查询语句。属性:id:语句的唯一标识符,对应Mapper接口中的方法名。parameterType:输入参数的类型。resultType:返回结果的类型。resultMap:返回结果......
  • Mybatis的Mapper映射文件中常用标签
    增删改查标签增:<insertid=""parameterType=""useGeneratedKeys="true"keyProperty="id">id接口名,parameterType传参类型,useGeneratedKeys是否使用数据库生成的主键,keyProperty将主键映射到哪个属性删:<deleteid=""></delete>改......
  • Mybatis的Mapper映射文件中常用标签以及作用
    1.SqlMapConfig标签SqlMapConfig标签是Mybatis配置文件中的根标签,它用于配置Mybatis的全局属性,包括数据库连接信息、类型别名、事务管理器等1.properties:用于指定外部属性文件的位置,可以用来配置数据库连接信息等敏感信息。2.settings:用于配置Mybatis的全局属性,包括......
  • Mybatis的Mapper映射文件中常用标签及作用
    1.<sql>标签定义重复使用的字段提高复用性点击查看代码<sqlid="Base_Column_List">id,name,contract_no,pdf_url,member_phone,elder_id,start_time,end_time,status,sort,level_desc,create_time,create_by,update_time,update_by,remark,......