Qt实现界面的窗口的局部动态添加并布局

此程序实现的是点击界面的添加界面按钮,新增加一个窗口,并实现窗口的布局,随着窗口个数的在布局中的增加,窗口大小自动缩小。创建基于QT widget Application的应用程序,选择基类QDialog,去掉Generate form前的勾,使用代码创建控件,设置所添加窗口的最大行数为5行。
代码如下:
main.cpp

#include "dialog.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}

dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QGridLayout>class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();public slots:void slot_btnClicked();
private:QGridLayout layout;QGridLayout layout1;QWidget *widget;uint16_t n;uint16_t row;
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include <QPushButton>
#include <QMessageBox>
#include <QDebug>/*问题描述:* 动态实现新增加界面的布局*/Dialog::Dialog(QWidget *parent): QDialog(parent)
{resize(600,500);
//    setContentsMargins(2,2,2,2);//设置窗口内容到边框的距离QPushButton *addBtn = new QPushButton(tr("增加界面"),this);
//    addBtn->move(5,5);//有布局的情况下不能再设置位置
//    addBtn->setGeometry(0,0,120,40);widget = new QWidget(this);
//    widget->setGeometry(5,50,600,400);//有布局的情况下似乎没有用widget->show();//非模态对话框widget->setObjectName("Parent");widget->setStyleSheet("QWidget#Parent{background-color:green;}");layout.setSpacing(15);//设置布局中控件之间的垂直距离layout.addWidget(addBtn,0,0,1,1);layout.addWidget(widget,1,0,10,10);//为了彼此之间有参照setLayout(&layout);connect(addBtn,&QPushButton::clicked,this,&Dialog::slot_btnClicked);n = 0;row = 0;
}Dialog::~Dialog()
{
}void Dialog::slot_btnClicked()//没有实现动态布局
{if(row == 5){qDebug()<<"不能再添加窗口了!";QMessageBox::information(this,tr("警告"),tr("不能再添加窗口了!"));return ;}QWidget *dlg = new QWidget(widget);
//    QDialog *dlg = new QDialog(widget);//QDialog是不被嵌入到父窗口部件的窗口,为顶级窗口dlg->show();dlg->setObjectName("child");//QWidget#Parent>dlg->setStyleSheet("QWidget#child{background-color:blue;}");
//    dlg->setStyleSheet("QDialog#child{background-color:blue;}");layout1.addWidget(dlg,row+1,(int)n%4,1,1);//栅格布局没有参照的情况下,先设置占一行一列n++;if(n%4 == 0){row++;}widget->setLayout(&layout1);
}

运行程序后,界面效果如下:
在这里插入图片描述
代码中含有对一些函数理解的注释,其中最关键的理解是两点:
1.QDialog为顶级窗口,没有父部件,不被嵌入到父部件中。
2.栅格布局中需要有所占行列的参考数。单一一个控件来使用栅格布局指定所占行列时,除一行一列外,无法实现期望效果,即:界面上只有一个按钮,按钮被放入栅格布局中,占3行2列,运行效果是将按钮进行了水平拉伸,几乎占据整个界面的长度。
在创建的项目的构造函数中加入如下代码:

  QPushButton *btn = new QPushButton(tr("开始"),this);btn->show();QGridLayout *layout = new QGridLayout;layout->addWidget(btn,0,0,4,3);setLayout(layout);

运行效果如下图所示:
在这里插入图片描述

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

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

相关文章

第五篇:Spring Boot整合filter

一、Springboot整合Servlet 第一种方案&#xff1a;通过注解扫描完成filter组建的注册 1、编写自定义filter(FirstFilter) //urlPattern是一个数组可以添加多个 //WebFilter(filterName "FirstFilter",urlPatterns {"*.do","*.jsp"}) WebFilt…

微服务精华问答:什么是微服务架构中的DRY?| 技术头条

微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。 究竟什么是微服务呢?今天就让我们一探究竟。1Q&#xff1a;什么是微服务架构中的DRY&#xff1f;A&#xff1a;DRY代表不要重复自己。它基本上促进了重用代码的概念。这导致开发和…

第六篇:Spring Boot 访问静态资源

Spring Boot的默认静态资源的路径为&#xff1a; spring.resources.static-locationsclasspath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ 优先级从从高到低 一、Spring Boot 访问静态资源有二种方案 第一种方案&#xff08;默认&…

C/C++ 输入某年某月某日,判断这一天是这一年的第几天?

目录 一.结果演示二.源代码三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 面向对象 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 设计模式 零基础 C/C 学习路线推荐 : C/C 学习目录…

QT中DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80040216 ()问题的解决

亲身经历此问题的困惑后&#xff0c;第二次遇到该问题&#xff0c;实在忍不住想把这个解决方法写下来&#xff0c;愿对和我一样遇到该问题的人有所帮助。 至于Qt产生该问题的原因&#xff0c;网上众说纷云&#xff0c;但都是一样的&#xff0c;说是缺少一个视频解码器。造成的现…

成为最大的独立开源公司,对SUSE意味着什么? | 人物志

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;作者&#xff1a;孙浩峰如果你在科技展会上看到了一只可爱的绿色小蜥蜴&#x…

第七篇:Spring Boot 整合_Thymeleaf 入门试炼 QuickStart

1.1 添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId&…

移动场景在其缩略图中显示场景中所显示的区域

需求描述 在场景中实现拖动&#xff0c;缩放&#xff0c;并在场景的缩略图中显示其对应在视口中显示的矩形区域。 程序效果图如下&#xff1a; 开发环境&#xff1a;Qt 5.13.1 编译环境&#xff1a;MinGW64 项目结构&#xff1a; 直接上程序: main.cpp #include "dial…

那些中国式家庭的小烦恼,我看用AI来解决就“都挺好” | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;转自&#xff1a;趣味科技v今天&#xff0c;又是《都挺好》全面承包热搜的一天。自从这…

penGL ES 2.0 和 3.0区别

目录 一.嵌入式设备的 OpenGL ES 版本二.兼容性三.着色器脚本 1.OpenGL ES shader 2.02.OpenGL ES shader 3.03.版本声明4. 默认精度修饰符 precision4.输入输出5.变量赋值 四.关于顶点缓冲区对象 VBO 与顶点数组对象 VAO五.PBO六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : O…

使用thymeleaf的时候报元素类型“meta“必须由匹配的结束标记

使用thymeleaf的时候报元素类型"meta"必须由匹配的结束标记""终止> 解决方案有二种&#xff1a; 第一种&#xff1a; 让html的标记严格严谨的语法&#xff1a; 加上结束标签第一种&#xff1a;&#xff1a;修改thymeleaf版本 <thymeleaf.version…

漫话:如何给女朋友解释什么是系统可用性? | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;转自&#xff1a;漫话编程在一个阳光明媚的周二下午&#xff0c;我正在公司里面看着即…

基于websocket的简单通信

首次接触websocket通信协议&#xff0c;不足之处希望指出一起进步。 简述 websocket是基于tcp协议的一种网络通信协议&#xff0c;分为客户端和服务端&#xff0c;可以实现客户端与服务端的双向通信。 与tcp的不同之处是&#xff1a; 1.客户端与服务端只需要一次握手协议&…

OpenGL ES 名词解释(一)

目录 一.前言二.OpenGL ES 上下文三.OpenGL ES 状态机四.缓存五.渲染六.纹理七.光栅化 Rasterization八.片元着色器九.顶点着色器十.着⾊语言 GLSL十一.着色器使用流程十二.着色器的渲染流程十三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenG…

大龄程序员失业后,看他们是如何破局突围的? | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;逆流的鱼yuiop转自&#xff1a;何俊林王小波在《黄金时代》里写道&am…

分布式架构系列: 负载均衡技术详解 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;ITFLY8转自&#xff1a;架构师技术联盟面对大量用户访问、高并发请求…

第七篇:Spring Boot整合Thymeleaf_入门试炼03

基本语法实战案例01 在ThymeleafController中添加此方法 RequestMapping("/show5")public String showInfo5(Model model) {model.addAttribute("msg", "Thymeleaf 第一个案例");model.addAttribute("key", new Date());return &quo…

Qt下自适应分辨率

qt下自适应分辨率应该有两种方法&#xff1a;通过栅格布局&#xff1b;通过缩放比。 本人采用的是缩放比来适应不同的分辨率。首先定义一个类实现屏幕分辨率和长宽缩放比的获取&#xff0c;由于该类可能被多个ui界面使用&#xff0c;所以定义为一个单例模式。代码如下&#xff…

OpenGL ES EGL 简介

目录 一.EGL 简介二.EGL 跨平台之 ANGLE 1.ANGLE 支持跨平台2.ANGLE 支持渲染器3.ANGLE 下载地址 三.EGL 坐标系四.EGL 绘图步骤五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录…

第八篇:Spring Boot整合Thymeleaf_入门试炼04

继承parent父工程&#xff0c;新建一个子项目&#xff0c;名称为spring-boot-chapter-8 1、引入 thymeleaf 模板依赖 <!-- 引入 thymeleaf 模板依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…