QT常用控件使用及布局

QT常用控件使用及布局


文章目录

  • QT常用控件使用及布局
  • 1、创建带Ui的工程
  • 2、ui界面介绍
    • 1、界面设计区
    • 2、对象监视区
    • 3、对象监属性编辑区
    • 4、信号与槽
    • 5、布局器
    • 6、控件
      • 1、Layouts
        • 1、布局管理器
        • 2、布局的dome
      • 2、Spacers
      • 3、Buttons
      • 4、项目视图组(Item Views)
      • 5、项目控件组(Item Widgets)
      • 6、Containers(容器)
      • 7、Input widgets
        • 1、QLineEdit 举例
      • 8、Display widgets
        • 1、怎么添加资源文件
        • 2、QLable标签实现标签文本,图片,链接
  • 3、布局练习
  • 4、自定义控件
  • 5、样式表
    • 1、Qt样式表介绍
    • 2、Qt样式表简单举例
  • 6、总结


1、创建带Ui的工程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
项目里会生成带.ui的文件,双击就可以进行ui设计。
在这里插入图片描述

2、ui界面介绍

双击 .ui文件,会弹出UI设计器,其布局大概为:
在这里插入图片描述

1、界面设计区

可以把控件直接拖进来进行布局。

2、对象监视区

所以在界面设计区的控件都能在这看到。

3、对象监属性编辑区

可以对界面设计区选中的控件进行属性设置。比如在界面设计区加入一个按钮。
在这里插入图片描述

4、信号与槽

在这里插入图片描述另外也可以在界面设计区选择按钮,然后右键 - 转到槽…,去添加自定义槽函数。
在这里插入图片描述
在这里插入图片描述
然后在窗口的类声明中的自动生成如下槽函数。然后去实现槽函数即可。这种方式就不需要自己去定义槽函数。
在这里插入图片描述

5、布局器

在这里插入图片描述

6、控件

在这里插入图片描述

1、Layouts

在这里插入图片描述

1、布局管理器

所谓 GUI 界面,归根结底,就是一堆控件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,控件的位置尤其重要。我们必须要指定控件放在哪里,以便窗口能够按照我们需要的方式进行渲染。这就涉及到控件定位的机制。
在这里插入图片描述
Qt 提供的布局中以下三种是我们最常用的:
QHBoxLayout:按照水平方向从左到右布局;
QVBoxLayout:按照竖直方向从上到下布局;
QGridLayout:在一个网格中进行布局,类似于 HTML 的 table(网格布局可以任意布局)

2、布局的dome
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout>MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);QSpinBox *spinBox = new QSpinBox(this);QSlider *slider = new QSlider(Qt::Horizontal, this);connect(slider, &QSlider::valueChanged,spinBox, &QSpinBox::setValue);void (QSpinBox:: *spinBoxSignal)(int) = &QSpinBox::valueChanged;/* 因为valueChanged信号重载了所以用函数指针来区分调用带参的信号 */connect(spinBox, spinBoxSignal,slider, &QSlider::setValue);spinBox->setValue(35); /* 设置spinBox值 *//* 给控件设置布局 指定布局的父对象(this) 相当把控件放到窗口 */QHBoxLayout *layout = new QHBoxLayout(this);layout->addWidget(spinBox);layout->addWidget(slider);
}

进行水平布局运行如下:
在这里插入图片描述
当窗口的大小改变时,窗口布局里的控件也会自动发生变化。

2、Spacers

在这里插入图片描述

3、Buttons

在这里插入图片描述

4、项目视图组(Item Views)

在这里插入图片描述

5、项目控件组(Item Widgets)

在这里插入图片描述

6、Containers(容器)

在这里插入图片描述

7、Input widgets

在这里插入图片描述

1、QLineEdit 举例
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QLineEdit>
#include <QCompleter>
#include <QStringList>MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);QLineEdit *edit = new QLineEdit(this);//设置内容edit->setText("12345678");/* 移动行编辑的位置 */edit->move(200,300);//设置内容显示间隙edit->setTextMargins(15, 0, 0, 0);//设置内容显示方式//ui->lineEdit->setEchoMode(QLineEdit::Password);QStringList list;list << "hello" << "How are you" << "hehe";QCompleter *com = new QCompleter(list, this);/* 设置是否区分大小写 */com->setCaseSensitivity(Qt::CaseInsensitive);/* 将QCompleter对象设置到QLineEdit中 */edit->setCompleter(com);
}

按’H’会有提示
在这里插入图片描述

8、Display widgets

在这里插入图片描述

1、怎么添加资源文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在资源里生成image.qrc文件 添加前缀:可以设置前缀 添加文件:可以添加文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
右键—>复制资源路径到剪贴板 。就可以复制选中的资源路径。比如复制如下 //image/LuffyQ.png 根据这路经就可以加载资源。

2、QLable标签实现标签文本,图片,链接
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QLabel>
#include<QMovie> /* 动画头文件 */
#include <QDesktopServices>MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);/* 1. 设置文本 */QLabel *lable_1 = new QLabel(this);lable_1->move(200,100);lable_1->setText("标签");/* 2. 设置图片 */QLabel *lable_2 = new QLabel(this);lable_2->move(200,200);lable_2->setPixmap(QPixmap("://image/LuffyQ.png"));/* 让图片自适应标签的大小 */lable_2->setScaledContents(true);/* 3. 设置动画 */QLabel *lable_3 = new QLabel(this);lable_3->move(400,200);/* 创建动画 */QMovie *movie = new QMovie("://image/mario.gif"); /* 资源要是动态的图片 *//* movie指定父对象 */movie->setParent(this);/* 标签里设置动画 */lable_3->setMovie(movie);/* 启动动画 */movie->start();/* 让动画自适应标签的大小 */lable_3->setScaledContents(true);/* 4. 显示HTML链接 */QLabel *lable_4 = new QLabel(this);lable_4->move(500,400);lable_4 ->setText("<h1><a href=\"https://www.baidu.com\">百度一下</a></h1>");/* 设置打开外部链接方法1 */lable_4 ->setOpenExternalLinks(true);/* 设置打开外部链接方法2 *///connect(lable_4, &QLabel::linkActivated, this, &MyWidget::slotOpenUrl);
}MyWidget::~MyWidget()
{delete ui;
}void MyWidget::slotOpenUrl(const QString &link)
{QDesktopServices::openUrl(QUrl(link.toLocal8Bit()));
}

3、布局练习

原则:先局部在整体布局。
在这里插入图片描述
总结:布局需要多练习。对象属性里熟悉合理设置。

4、自定义控件

不是在已有的控件拖到界面设计区。
怎么添加类文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成Smallwidget.h Smallwidget.cpp
在这里插入图片描述
在Smallwidget.cpp里添加如下代码

#include "smallwidget.h"
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout>Smallwidget::Smallwidget(QWidget *parent): QWidget{parent}
{QSpinBox *spin = new QSpinBox(this);QSlider *slider = new QSlider(Qt::Horizontal, this);//把控件添加到布局中QHBoxLayout *hLayout = new QHBoxLayout(this);hLayout->addWidget(spin);hLayout->addWidget(slider);connect(spin, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),slider, &QSlider::setValue);connect(slider,  &QSlider::valueChanged, spin, &QSpinBox::setValue);
}

在界面设计区添加空容器。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终运行如下:
在这里插入图片描述
提升的Smallwidget类在容器里显示出来。

5、样式表

1、Qt样式表介绍

Qt样式表是一个可以自定义部件外观的十分强大的机制﹐控件的都可以使用Qt样式表来美化。Qt样式表的概念,术语和语法都受到了HTML的层叠样式表(Cascading Style Sheets, CSS)的启发,不过与CSS不同的是,Qt样式表应用于部件。
样式表可以使用QApplication: : setStyleSheet()函数将其设置到整个应用程序上,也可以使用QWidget::setStyleSheet()函数将其设置到一个指定的部件(还有它的子部件)上。如果在不同的级别都设置了样式表,那么Qt会使用所有有效的样式表,这被称为样式表的层叠。

2、Qt样式表简单举例

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QLabel>
#include <QPushButton>
MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget)
{ui->setupUi(this);QLabel *pLable = new QLabel(this);QLabel *pLable1 = new QLabel(this);QPushButton *button = new QPushButton(this);pLable->move(100,100);pLable->resize(200,200);pLable1->resize(100,100);button->move(300,300);button->resize(300,300);this->setStyleSheet("QLabel{color:rgb(0, 255, 255);""background-color:red;""}"); /* 设置整个窗口的标签 */pLable->setStyleSheet("QLabel{color:rgb(0, 255, 255);""background-color:blue;""border-image:url(://image/down.png);""}");button->setStyleSheet("QPushButton{""border-image:url(:/image/Sunny.jpg);" /* 填充边框的图像 */"}""QPushButton:hover{""border-image:url(:/image/up.png);" /* 鼠标悬空在按钮的图像 */"}""QPushButton:pressed{""border-image:url(:/image/Luffy.png);" /* 按钮按下图像 */"}");
}

其它QT样式表博客

6、总结

主要介绍QT的UI界面及控件的简单使用与布局。及自定义控件。控件的渲染样式表的简单介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/233207.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“数据要素×”正式来袭|美创“全栈能力、深入场景”保障数据价值安全释放

千呼万唤&#xff0c;1月4日&#xff0c;国家数据局等17部门联合印发的《“数据要素”三年行动计划&#xff08;2024—2026年&#xff09;》&#xff08;下称《三年行动计划》&#xff09;正式发布&#xff01; 作为国家数据局成立以来公开发布的首个重磅文件&#xff0c;《三年…

大数据StarRocks(四) :常用命令

这次主要介绍生产工作中使用Starrocks时的常用命令 4.1 连接StarRocks 4.1.1 Linux命令行连接 [roothadoop1011 fe]# yum install mysql -y [roothadoop1011 fe]# mysql -h hadoop101 -uroot -P9030 -p4.1.2 Windows客户端 DBeaver 连接 4.2 常用命令 4.2.1 查看状态 1. 查…

uniapp获取手机当前信息及应用版本

appVersion 是app端查询的数据信息 appWgtVersion 是浏览器端查询的数据信息 onLoad() {const systemInfo uni.getSystemInfoSync();console.log(systemInfo);// #ifdef H5const uniAppVersion systemInfo.appVersion;// #endif// #ifndef H5const uniAppVersion systemIn…

案例分享:Qt多国语言输入法软键盘

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/135346374 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

vue-springboot基于java的实验室安全考试系统

本系统为用户而设计制作实验室安全考试系统&#xff0c;旨在实现实验室安全考试智能化、现代化管理。本实验室安全考试管理自动化系统的开发和研制的最终目的是将实验室安全考试的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的…

模板管理支持批量操作,DataEase开源数据可视化分析平台v2.2.0发布

2024年1月8日&#xff0c;DataEase开源数据可视化分析平台正式发布v2.2.0版本。 这一版本的功能升级包括&#xff1a;在“模板管理”页面中&#xff0c;用户可以通过模板管理的批量操作功能&#xff0c;对已有模板进行快速重新分类、删除等维护操作&#xff1b;数据大屏中&…

大数据 - Doris系列《二》- Doris安装(亲测成功版)

目录 &#x1f436;2.1 安装前准备 &#x1f959;1.设置系统最大文件打开句柄数 >启动一个程序的时候&#xff0c;打开文件的数量就是句柄数 &#x1f959;2.设置文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量 &#x1f959;3.时钟同步 &#x1f959;4.关闭交…

labelImg的安装与使用

目录 1、查看本机是否安装labelImg 2、安装labelImg 3、创建自己的数据集 3.1 建立新文件夹 3.2 打开labelImg 注意&#xff1a;出现闪退的情况处理。 4、文件格式转换 4.1 修改文件夹路径 4.2 新建datasets文件夹 4.3 修改图片路径 4.4 执行 1、查看本机是否安装la…

uniCloud 云函数

相对于云函数&#xff0c;官方更推荐使用 云对象 新建云函数 编辑云函数 uniCloud-aliyun/cloudfunctions/hello_func/index.js use strict; exports.main async (event, context) > {let {name} eventreturn 你好&#xff0c;${name}! };云函数接收的参数从event中解构获…

部署可道云网盘的一个漏洞解决

目录 1漏洞展示 2.防范措施 1漏洞展示 因为可道云网盘的上传文档有保存在 /data/Group/public/home/文档/ 中,当别有用心之人知道个人部署的域名与上次的文件后&#xff0c;可以进行访问拿到uid。例我在我部署的网盘上上次一个aa.php 文件&#xff0c;然后拿来演示 然后通过…

密码学中的Hash函数

目录 一. 介绍 二. hash函数的五个基本性质 &#xff08;&#xff11;&#xff09;压缩性 &#xff08;&#xff12;&#xff09;正向计算简单性 &#xff08;&#xff13;&#xff09;逆向计算困难性 &#xff08;&#xff14;&#xff09;弱无碰撞性 &#xff08;&…

RabbitMQ(八)消息的序列化

目录 一、为什么需要消息序列化&#xff1f;二、常用的消息序列化方式1&#xff09;Java原生序列化&#xff08;默认&#xff09;2&#xff09;JSON格式3&#xff09;Protobuf 格式4&#xff09;Avro 格式5&#xff09;MessagePack 格式 三、总结 RabbitMQ 是一个强大的消息中间…

安全基础~信息搜集3

文章目录 知识补充APP信息搜集php开发学习理解漏洞 知识补充 端口渗透总结 python Crypto报错&#xff1a;https://blog.csdn.net/five3/article/details/86160683 APP信息搜集 1. AppInfoScanner 移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具 使用教程 演示&…

【Harmony OS - 网络请求】

在一个应用开发中&#xff0c;网络请求是必不可少的&#xff0c;我们一般用的fetch、axios来进行http请求&#xff0c;在鸿蒙中也可以通过createHppt来发生一个http请求&#xff0c;它们都是异步请求返回的Promise&#xff0c;下面我们将介绍’ohos.net.http’和axios这两种方式…

网络端口(包括TCP端口和UDP端口)的作用、定义、分类,以及在视频监控和流媒体通信中的定义

目 录 一、什么地方会用到网络端口&#xff1f; 二、端口的定义和作用 &#xff08;一&#xff09;TCP协议和UDP协议 &#xff08;二&#xff09;端口的定义 &#xff08;三&#xff09;在TCP/IP体系中&#xff0c;端口(TCP和UDP)的作用 &#xff08;…

SSM框架学习笔记01 | 注解开发

文章目录 1. 注解形式定义bean2.纯注解开发3.bean管理4. 依赖注入5. 第三方bean管理总结 1. 注解形式定义bean Compoenet ControllerServiceRepository 配合代码块 <context:component-scan /> 使用 2.纯注解开发 Configuration ComponentScan AnnotationConfigApplicati…

k8s笔记1- 初步认识k8s

k8s简介&#xff1a; kubernetes&#xff0c;俗称k8是&#xff0c;用于自动部署&#xff0c;扩缩和管理容器化应用程序的开源系统&#xff0c;它将组成应用程序的容器&#xff0c;组合成逻辑单元&#xff0c;便于管理和服务发现。 k8s的作用 自动化上线和回滚、存储编排…

加工制造EUV极紫外光刻机的钼/硅反射镜的方法与技术

EUV光刻机使用的反射镜材质是具有极高精度的钼/硅反射镜。这是因为几乎所有材料对13.5nm的EUV都强烈吸收&#xff0c;故EUV光刻机不能采用DUV那样的透镜&#xff0c;只能采用反射式光学系统。又因为EUV波长与晶格参数接近&#xff0c;很容易发生衍射&#xff0c;反射率也很低&a…

vue3 指令详解

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、v-model &#xff08;双向绑定功能&#xff09;二、v-bind(用于将一个或多个属性绑定到元素的属性或组件的 prop)三、v-if、v-else、v-else-if(用于根据条件选择性地渲染元素)四、v-show&#xff08;根…

iview table 表格合并行鼠标悬停时的高亮显示

背景&#xff1a; Iview里面的表格没有提供鼠标移入移出的事件。 而且当开启鼠标悬浮高亮的时候会显示异常&#xff0c;并没有高亮合并后的整行&#xff0c;还是高亮子行。 高亮前&#xff1a; 高亮异常情况&#xff1a; 解决后&#xff1a; 解决方案&#xff1a; 一、思路&…