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

news2024/9/28 9:49:54

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()));//将信号与槽函数进行绑定连接

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线性代数的学习和整理5: 矩阵的加减乘除及其几何意义

目录 1 矩阵加法 1.1 矩阵加法的定义 1.2 加法的属性 1.2.1 只有同类型&#xff0c;相同n*m的矩阵才可以相加 1.2.1 矩阵加法的可交换律&#xff1a; 1.2.2 矩阵加法的可结合律&#xff1a; 1.3矩阵加法的几何意义 2 矩阵的减法 2.1 矩阵减法定义和原理基本同 矩阵的…

MongoDB【CRUD练习-条件查询-文档关系】

练习1-CRUD // 进入test数据库 use test; // 查询文档内容 db.students.find(); // 显示当前数据库中所有集合 show collections; // 向数据库的user集合中插入一个文档 db.users.insertOne({username: "lyh"} ); // 查看当前数据库中所有的集合 发现users集合被创建…

JavaFX笔记

设置透明 group.setOpacity(0.5);&#xff0c;这里给group设置了半透明&#xff0c;其中的组件也会跟着变化。 按钮的字体 按钮背景 麻烦方法 paint是颜色 CornerRadii是圆角的弧度 CSS方法 单击事件

java八股文面试[java基础]——反射

知识来源&#xff1a; 【23版面试突击】讲讲JAVA的反射机制_哔哩哔哩_bilibili

华为云服务器部署mysql

1. 下载mysql压缩包 本机是64位&#xff0c;直接用命令安装 msyql官网&#xff1a; https://dev.mysql.com/downloads/mysql/ 去网站看下所需的版本&#xff0c;修改下列命令 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.…

学习JAVA打卡第四十天

对象的字符串表示 在此类中我们讲过&#xff0c;所有的类都默认是java.lang包中object类的子类或间接子类。 Object类有一个public String toString&#xff08;&#xff09;方法,一个对象通过调用该方法可以获得该对象的字符串表示。一个对象调用toString法&#xff08;&…

vcomp140.dll丢失的修复方法分享,电脑提示vcomp140.dll丢失修复方法

今天&#xff0c;我的电脑出现了一个奇怪的问题&#xff0c;打开某些程序时总是提示“找不到vcomp140.dll文件”。这个问题让我非常头疼&#xff0c;因为我无法正常使用电脑上的一些重要软件。为了解决这个问题&#xff0c;我在网上查找了很多资料&#xff0c;并尝试了多种方法…

【面试经典150题】删除有序数组中的重复项-JavaScript版

题目链接 思路1&#xff1a;使用set。 /*** param {number[]} nums* return {number}*/ var removeDuplicates function(nums) {const uniqueSetnew Set();for(let i0;i<nums.length;i){uniqueSet.add(nums[i]);}const uniqueArrayArray.from(uniqueSet);nums.length0;nu…

【项目经理】项目管理杂谈

杂谈 1. 走上管理岗位&#xff0c;别再自己埋头干了2. 如何更好地管理项目进度3. 管理是“管事”而不是“管人”4. 让领导欣赏的十个沟通技巧在这里插入图片描述 1. 走上管理岗位&#xff0c;别再自己埋头干了 2. 如何更好地管理项目进度 3. 管理是“管事”而不是“管人” 4. 让…

书单背景图片怎么做?分享个手机轻松制作的方法

添加背景图片可以让书单变得更加吸引人&#xff0c;同时也能够让读者更好地理解该书单所代表的主题。在这篇文章中&#xff0c;我们将分享如何为书单添加背景图片&#xff0c;以及需要注意的地方。 如果你想在手机上把书单制作成视频的话&#xff0c;可以使用一些编辑应用&…

Docker容器学习:搭建ownCloud个人网盘

目录 前提环境 拉取镜像 创建容器 创建mysql容器&#xff1a; 创建OwnCloud容器&#xff0c;并连接到数据库&#xff1a; 创建Nginx容器&#xff1a; 配置nignx 前提环境 基于Centos7.9版本环境安装Docker-ce&#xff1a;24.0.5 拉取镜像 docker pull mysql:5.6 dock…

23年下半年软考系统架构设计师(最新报名时间)

高级系统架构设计师&#xff0c;有一定的难度&#xff0c;值得挑战一下 23年下半年软考架构启用最新版考试大纲&#xff0c;而且报名时间也推迟了&#xff0c;考试形式也改了&#xff0c;由笔试改为了机考&#xff0c;所以今年报名一定要多关注一下&#xff01;&#xff01; 软…

【LeetCode】167. 两数之和 II - 输入有序数组 - 双指针

目录标题 2023-8-23 09:25:08 2023-8-23 09:25:08 自己写的不是常量级的额外空间&#xff0c;但是写出来了&#xff0c;记录一下。 下次写的时候&#xff0c;请用双指针。 &#xff08;其实我想了想一想&#xff0c;双指针就没感觉出来&#xff1a;因为我只想到双指针两个都…

深度学习--LSTM网络、使用方法、实战情感分类问题

1.LSTM基础 长短期记忆网络&#xff08;Long Short-Term Memory&#xff0c;简称LSTM&#xff09;&#xff0c;是RNN的一种&#xff0c;为了解决RNN存在长期依赖问题而设计出来的。 LSTM的基本结构&#xff1a; 2.LSTM的具体说明 LSTM与RNN的结构相比&#xff0c;在参数更新…

聊一下最近有个网红铁头惩恶扬善举报新东方校外补课引起争议

最近有个网红&#xff0c;铁头打假&#xff0c;举报新东方校外补课上了热搜&#xff0c;引起了争议 最近他自己在一次直播带货当中&#xff0c;翻车了的 铁头敢端了学生的课桌&#xff0c;家长就敢掀了他的直播间 而因自己&#xff0c;我不用读书&#xff0c;我有社会经验&…

双碳目标下DNDC模型教程

详情点击链接&#xff1a;双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践技术应用教程 前沿 碳循环的精确模拟是实现“双碳”行动的关键。DNDC&#xff08;Denitrification-Decomposition&#xff0c;反硝化-分解模型&#…

前端三部曲之一HTML

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

同样都是手机卡,为什么线下的手机卡和线上的手机卡差距这么大?

大家好&#xff0c;我是搜卡之家&#xff0c;今天这篇文章就带大家了解一下线上流量卡和线下流量卡有哪些区别&#xff1f; ​ 众所周知&#xff0c;如果我们在营业厅办理流量业务&#xff0c;30G的流量不管是哪个运营商可能就需要将近100块钱&#xff0c;是为什么线上申请的流…

简单聊聊uniapp和uview组件库一起开发

简单的聊聊uniapp和uview组件库的开发 uniapp是一个基于Vue.js的跨平台开发框架&#xff0c;可以同时开发H5、微信小程序、App等多个平台的应用。这样可以减少开发人员的工作量&#xff0c;提高开发效率。 官网&#xff1a;https://uniapp.dcloud.net.cn/ uView是uni-app生态…

hive-列转行

转成 select customer_code,product_type from temp.temp_xx LATERAL VIEW explode(SPLIT(product_types,,)) table_tmp AS product_type where customer_code K100515182