c++ qt--页面布局(第五部分)

c++ qt–页面布局(第五部分)

一.页面布局

在设计页面的左侧一栏的组件中我们可以看到进行页面布局的一些组件

在这里插入图片描述

布局组件的使用

1.水平布局

使用:将别的组件拖到水平布局的组件中即可,可以选择是在哪个位置

在这里插入图片描述

2.垂直布局

使用:将别的组件拖到垂直布局的组件中即可,可以选择是在哪个位置

在这里插入图片描述

3.栅格布局

使用:将别的组件拖到栅格布局的组件中即可,可以选择是在哪个位置

在这里插入图片描述

4.表单布局

在这里插入图片描述

分隔组件的使用

1.水平分隔

使用:将此组件放到布局组件中即可(也可以直接将组件放到窗口中)

在这里插入图片描述

1.垂直分隔

使用:将此组件放到布局组件中即可(也可以直接将组件放到窗口中)
在这里插入图片描述

在设计页面的上面也有跟左侧一样的页面布局(这里使用更加方便一些)

在这里插入图片描述

这里拿栅格布局进行使用

使用如下图

在这里插入图片描述

变成下图的样子

在这里插入图片描述

栅格布局具有一定的智能化,会自动帮你把要进行栅格布局的组件所占的大小和位置分配好

二.使用了页面布局的例子

实现下面窗口

在这里插入图片描述

进行实现

1.设计中用到的组件如下

在这里插入图片描述

这里布局用的是栅格布局

2.对用到组件重命名(实际上是指向组件的指针的名字)

在这里插入图片描述

3.将各个组件的功能进行实现

1.设置年龄

在mianwindow.cpp的构造函数中写下面代码

ui->sB_age->setValue(1);//年龄默认设置为1岁
2.设置性别

在mianwindow.cpp的构造函数中写下面代码

 ui->cB_sex->addItem("男");//设置性别,默认显示第一个
 ui->cB_sex->addItem("女");
3.设置日期
//这里用了QDate这个类中的函数(这个函数的返回值就是setDate函数所需要的参数也就是日期)
ui->dE_birth->setDate(QDate::currentDate());//设置当天日期
4.设置邮箱
 QStringList strList{"qq.com","163.com","foxmail.com","sina.com"};//此变量中存的是字符串,之后作为addItems函数的参数
 ui->cB_emil->addItems(strList);//设置邮箱
 ui->cB_emil->setCurrentIndex(1);//设置下标为1的邮箱默认显示(这里0是"qq.com",1是"163.com",2是"foxmail.com",3是"sina.com"与QString链表存入的QString先后顺序有关)
 //ui->cB_emil->setCurrentText("163.com");//设置"163.com"邮箱默认显示
5.更新头像

将显示照片的组件大小固定,显示的图片水平,垂直居中

在这里插入图片描述

在这里插入图片描述

自定义一个槽函数
1.声明

在mianwindow.h的类中写下面代码

public slots:
    void slots_selete_picture();
2.定义

在mianwindow.cpp写下面代码

void MainWindow::slots_selete_picture()
{
    //更新头像
    
    //弹出弹出框,选择图片
    
    //下面函数需要用到头文件  #include<QFileDialog>
   QString str= QFileDialog::getOpenFileName(this/*父窗口*/
                                             ,"请选择一张图片"/*弹出框标题*/
                                             ,"C:\\Users\\冉喜文\\Pictures\\Screenshots"/*初始路径*/
                                             ,"Images (*.png *.bmp *.jpg)"/*过滤,能选择的图片  注意格										   式与格式之间有空格*/); //用QSting接一下返回值
    
    qDebug()<<str;//看看返回的是什么,返回的是路径+wen
    
    if(!str.isEmpty()){//选择了一张图片
        //将图片设置到lable组件
        QPixmap pix(str);
        QRect rect=ui->label_picture->geometry();//动态获取显示图片组件宽度、高度
        pix=pix.scaled(rect.width(),rect.height(),Qt::KeepAspectRatio);//保持宽高比,缩放到指定大小
        ui->label_picture->setPixmap(pix);
    }
}
3.进行绑定连接

在mianwindow.cpp的构造函数中写下面代码

connect(ui->pB_picture,SIGNAL(clicked()),this,SLOT(slots_selete_picture()));//将信号与槽函数进行绑定连接

当点击下面的按键时,就会触发上面的槽函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wgzYM59w-1692836716846)(C:\Users\冉喜文\AppData\Roaming\Typora\typora-user-images\image-20230823232251233.png)]

6.实现更新按键的功能(这里更新的功能是将个人信息存入到文件中)
1.创建文件名

在mianwindow.cpp中写下面代码

#define FileName "32.txt"
2.创建文件

操作文件变量不应该是局部的,所以我们在mianwindow.h的类中定义出来

public:
    QFile file;

在mianwindow.cpp的构造函数中写下面代码

QString workPath =QDir::currentPath();//获取当前的工作路径
     QDir dir(workPath);
     if(!dir.exists()){//路径不存在,则创建路径
         if(dir.mkpath(workPath)){
             QMessageBox::critical(this,"错误","创建路径失败");
 
             exit(0);//程序退出
         }
 
     }
     QString absPathFile=dir.absoluteFilePath(FileName);//当前的工作路径和文件名做拼接,返回一个新的路径
     qDebug()<<"absPathFile = "<<absPathFile;//看一下路径是否正确

     file.setFileName(absPathFile);//与路径进行绑定

     if(!file.open(QIODevice::ReadWrite|QIODevice::Text)){//参数是以什么方式打开文件,这里是以可读写文本形式打开文件
          QMessageBox::critical(this,"错误","文件打开失败");
          exit(0);//程序退出
     }
3.将所有信息写入文件中

自定义一个槽函数

1.声明

在mianwindow.h的类中写下面代码

public slots:
     void slots_write();

2.定义

在mianwindow.cpp写下面代码

void MainWindow::slots_write()
{
    file.resize(0);//清空文件
    
    QString userInfo="%1\n%2\n%3\n%4\n%5\n%6\n%7\n%8\n%9\n";//将所有信息存入到一个QString中,这里用了灵活格式化
    userInfo = userInfo.arg(ui->le_nick->text())//这里接一下
            .arg(ui->pTE_write->toPlainText ())
            .arg(ui->le_name->text())
            .arg(ui->cB_sex->currentText ())
            .arg(ui->sB_age->text())
            .arg(ui->dE_birth->text ())
            .arg(ui->_tel->text ())
            .arg(ui->le_mail->text()+"@"+ui->cb_suffix->currentText ())
            .arg(ui->lineEdit->text ());
    qDebug ()<<"userInfo = "<<userInfo;//输出一下信息
    if(-1 == file.write(userInfo. toStdString().c_str())){//写入文件失败,这里参数要的是const char*类型的所以我们先将QString转为string然后再将string转为const char*
    QMessageBox::critical(this,"错误","用户信息写入文件失败");//错误的弹出框
    return;
    }
    
    file.flush();//刷新缓冲区,将信息及时更新到文件中
    QMessageBox::information(this,"提示","用户信息写入成功");//提示的弹出框
}

3.进行绑定

在mianwindow.cpp的构造函数中写下面代码

connect(ui->pB_picture,SIGNAL(clicked()),this,SLOT(slots_selete_picture()));//将信号与槽函数进行绑定连接
7.实现清空按键的功能(这里清空的功能是将个人信息全部重置为初始状态)
自定义一个槽函数
1.声明

在mianwindow.h的类中写下面代码

public slots:
    void slots_selete_picture();
2.定义

在mianwindow.cpp写下面代码

void MainWindow::slots_clearform()
{

    ui->le_nick->clear();
    ui->pTE_write->clear();
    ui->le_name->setText("");
    ui->cB_sex->setCurrentIndex(0);
    ui->sB_age->setValue(1);
    ui->dE_birth->setDate(QDate::currentDate());
    ui->le_phone->clear();
    ui->le_emil->clear();
    ui->cB_emil->setCurrentIndex(1);
    ui->le_school->clear();
}
3.进行绑定连接

在mianwindow.cpp的构造函数中写下面代码

connect(ui->pB_clear,SIGNAL(clicked()),this,SLOT(slots_clearform()));//将信号与槽函数进行绑定连接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server

前言 基于我个人的工作内容和兴趣&#xff0c;想要在家里搞一套服务器集群&#xff0c;用于容器/K8s 等方案的测试验证。 考虑过使用二手服务器&#xff0c;比如 Dell R730, 还搞了一套配置清单&#xff0c;如下&#xff1a; Dell R7303.5 尺寸规格硬盘CPU: 2686v4*2 内存&a…

初阶c语言:趣味扫雷游戏

目录 前言 制作菜单 构建游戏选择框架 实现游戏功能 模块化编程&#xff1a;查看前节三子棋的内容 初始化雷区 ​编辑 优化棋盘 随机埋入地雷 点击后的决策 实现此功能代码 game&#xff08;&#xff09;&#xff1b;的安排 前言 《扫雷》是一款大众类的益智小游戏&…

从0到1学会Git(第一部分):Git的下载和初始化配置

1.Git是什么: 首先我们看一下百度百科的介绍:Git&#xff08;读音为/gɪt/&#xff09;是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 …

配置Linux内核支持make menuconfig

新环境从0配置Linux内核支持make menuconfig hudahuahudahua-virtual-machine:~/workspace/tools/linux-5.15.13$ make menuconfigCommand ‘make’ not found, but can be installed with sudo apt install make # version 4.2.1-1.2, or sudo apt install make-guile # vers…

系统上线安全测评需要做哪些内容?

电力信息系统、航空航天、交通运输、银行金融、地图绘画、政府官网等系统再正式上线前需要做安全测试。避免造成数据泄露从而引起的各种严重问题。 那么系统上线前需要做哪些测试内容呢&#xff1f;下面由我给大家介绍 1、安全机制检测-应用安全 身份鉴别 登录控制模块 应提供…

【2023钉钉杯复赛】A题 智能手机用户监测数据分析 Python代码分析

【2023钉钉杯复赛】A题 智能手机用户监测数据分析 Python代码分析 1 题目 一、问题背景 近年来&#xff0c;随着智能手机的产生&#xff0c;发展到爆炸式的普及增长&#xff0c;不仅推动了中 国智能手机市场的发展和扩大&#xff0c;还快速的促进手机软件的开发。近年中国智能…

操作员管理 微人事 项目 SpringBooot + Vue 前后端分离

操作员管理接口设计 HrController RestController RequestMapping("/system/hr") public class HrController {AutowiredHrService hrService;GetMapping("/")public List<Hr> getAllHr(){return hrService.getAllHr();}}HrService public List<…

【深度学习_TensorFlow】过拟合

写在前面 过拟合与欠拟合 欠拟合&#xff1a; 是指在模型学习能力较弱&#xff0c;而数据复杂度较高的情况下&#xff0c;模型无法学习到数据集中的“一般规律”&#xff0c;因而导致泛化能力弱。此时&#xff0c;算法在训练集上表现一般&#xff0c;但在测试集上表现较差&…

FPGA应用于图像处理

FPGA应用于图像处理 FPGA&#xff08;Field-Programmable Gate Array&#xff09;直译过来就是现场可编程门阵列。是一种可以编程的逻辑器件&#xff0c;具有高度的灵活性&#xff0c;可以根据具体需求就像编程来实现不同的功能。 FPGA器件属于专用的集成电流中的一种半定制电…

TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

华为最新发布的前端 UI 组件库&#xff0c;支持 PC 和移动端&#xff0c;自带了 admin 后台系统&#xff0c;完成度很高&#xff0c;web 项目开发又多一个选择。 关于 OpenTiny 和 TinyVue 在上个月结束的华为开发者大会2023上&#xff0c;官方正式进行发布了 OpenTiny&#…

使用VSCode SSH实现公网远程连接本地服务器开发的详细教程

文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 前言 远程…

【二分】搜索旋转数组

文章目录 不重复数组找最小值&#xff0c;返回下标重复数组找最小值&#xff0c;返回下标不重复数组找target&#xff0c;返回下标重复数组找target&#xff0c;返回bool重复数组找target&#xff0c;返回下标 不重复数组找最小值&#xff0c;返回下标 class Solution {public …

Windows下 MySql通过拷贝data目录迁移数据库的方法

MySQL数据库的文件目录下图所示&#xff0c; 现举例说明通过COPY文件夹data下数据库文件&#xff0c;进行数据拷贝的步骤&#xff1b;源数据库运行在A服务器上&#xff0c;拷贝到B服务器&#xff0c;假定B服务器上MySQL数据库已经安装完成&#xff0c;为空数据库。 首先进入A服…

华为云渲染实践

// 编者按&#xff1a;云计算与网络基础设施发展为云端渲染提供了更好的发展机会&#xff0c;华为云随之长期在自研图形渲染引擎、工业领域渲染和AI加速渲染三大方向进行云渲染方面的探索与研究。本次LiveVideoStackCon 2023上海站邀请了来自华为云的陈普&#xff0c;为大家分…

百度“AI智障”到AI智能体验之旅

目录 前言一、百度PLATO1.抬杠第一名2.听Ta瞎扯淡3.TA当场去世了4.智障与网友的高光时刻 二、文心一言1.设计测试用例2.随意发问3.手机端约会神器 三、体验总结&#xff1a;四、千帆大模型 前言 最近收到了文心一言3.5大模型的内测资格&#xff0c;正巧之前也体验过它的前身&q…

Request对象和response对象

一、概念 request对象和response对象是通过Servlet容器&#xff08;如Tomcat&#xff09;自动创建并传递给Servlet的。 Servlet容器负责接收客户端的请求&#xff0c;并将请求信息封装到request对象中&#xff0c;然后将request对象传 递给相应的Servlet进行处理。类似地&…

SpringBoot入门篇1 - 简介和工程创建

目录 SpringBoot是由Pivotal团队提供的全新框架&#xff0c; 其设计目的是用来简化Spring应用的初始搭建以及开发过程。 1.创建入门工程案例 ①创建新模块&#xff0c;选择Spring初始化&#xff0c;并配置模块相关基础信息 ②开发控制器类 controller/BookController.jav…

短视频矩阵系统接口部署技术搭建

前言 短视频矩阵系统开发涉及到多个领域的技术&#xff0c;包括视频编解码技术、大数据处理技术、音视频传输技术、电子商务及支付技术等。因此&#xff0c;短视频矩阵系统开发人员需要具备扎实的计算机基础知识、出色的编程能力、熟练掌握多种开发工具和框架&#xff0c;并掌握…

全套解决方案:基于pytorch、transformers的中文NLP训练框架,支持大模型训练和文本生成,快速上手,海量训练数据!

全套解决方案&#xff1a;基于pytorch、transformers的中文NLP训练框架&#xff0c;支持大模型训练和文本生成&#xff0c;快速上手&#xff0c;海量训练数据&#xff01; 1.简介 目标&#xff1a;基于pytorch、transformers做中文领域的nlp开箱即用的训练框架&#xff0c;提…

开源网安受邀参加软件供应链安全沙龙,推动企业提升安全治理能力

​8月23日下午&#xff0c;合肥软件行业软件供应链安全沙龙在中安创谷科技园举办。此次沙龙由合肥软件产业公共服务中心联合中安创谷科技园公司共同主办&#xff0c;开源网安软件供应链安全专家王晓龙、尹杰受邀参会并带来软件供应链安全方面的精彩内容分享&#xff0c;共同探讨…