qt-16可扩展对话框--隐藏和展现

embedded/2024/10/21 9:45:57/

可扩展对话框

  • 知识点
  • extension.h
  • extension.cpp
  • main.cpp
  • 运行图
    • 初始化隐藏
    • 展现--点击--详细按钮

知识点

MainLayout->setSizeConstraint(QLayout::SetFixedSize);//固定窗口大小

extension.h

#ifndef EXTENSION_H
#define EXTENSION_H#include <QDialog>class Extension : public QDialog
{Q_OBJECTpublic:Extension(QWidget *parent = nullptr);~Extension();
private slots:void ShowDetailInfo();
private:void CreateBaseInfo();void CreateDetailInfo();QWidget* BaseWidget;QWidget* DetailWidget;
};
#endif // EXTENSION_H

extension.cpp

#include "extension.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QPushButton>
#include <QDialogButtonBox>
#include <QHBoxLayout>Extension::Extension(QWidget *parent): QDialog(parent)
{setWindowTitle(tr("Extension Dialog"));CreateBaseInfo();CreateDetailInfo();QVBoxLayout* MainLayout = new QVBoxLayout(this);MainLayout->addWidget(BaseWidget);MainLayout->addWidget(DetailWidget);//MainLayout->setSizeConstraint(QLayout::SetFixedSize);//固定窗口大小MainLayout->setSpacing(10);
}Extension::~Extension() {}void Extension::ShowDetailInfo()
{if(DetailWidget->isHidden()){DetailWidget->show();return;}DetailWidget->hide();}void Extension::CreateBaseInfo()
{BaseWidget = new QWidget;QLabel* NameLabel = new QLabel(tr("姓名:"));QLineEdit* NameLineEdit = new QLineEdit;QLabel* SexLabel = new QLabel("性别:");QComboBox* SexComboBox = new QComboBox;SexComboBox->insertItem(0,tr("男"));SexComboBox->insertItem(1,tr("女"));QGridLayout* LeftLayout = new QGridLayout;LeftLayout->addWidget(NameLabel,0,0);LeftLayout->addWidget(NameLineEdit,0,1);LeftLayout->addWidget(SexLabel,1,0);LeftLayout->addWidget(SexComboBox,1,1);QPushButton* OkBtn = new QPushButton(tr("确定"));QPushButton* DetailBtn = new QPushButton(tr("详细"));QDialogButtonBox* BtnBox = new QDialogButtonBox(Qt::Vertical);BtnBox->addButton(OkBtn,QDialogButtonBox::ActionRole);BtnBox->addButton(DetailBtn,QDialogButtonBox::ActionRole);//主布局QHBoxLayout* MainLayout = new QHBoxLayout(BaseWidget);MainLayout->addLayout(LeftLayout);MainLayout->addWidget(BtnBox);//事件connect(DetailBtn,SIGNAL(clicked()),this,SLOT(ShowDetailInfo()));
}void Extension::CreateDetailInfo()
{DetailWidget = new QWidget;QLabel* AgeLabel = new QLabel(tr("年龄"));QLineEdit* AgeLineEdit = new QLineEdit(tr("30"));QLabel* DepartmentLabel = new QLabel(tr("部门:"));QComboBox* DepartmentComboBox = new QComboBox;DepartmentComboBox->addItem(tr("部门1"));DepartmentComboBox->addItem(tr("部门2"));DepartmentComboBox->addItem(tr("部门3"));DepartmentComboBox->addItem(tr("部门4"));QLabel* EmailLabel = new QLabel(tr("Email:"));QLineEdit* EmailEdit = new QLineEdit;//布局QGridLayout* MainLayout = new QGridLayout(DetailWidget);MainLayout->addWidget(AgeLabel,0,0);MainLayout->addWidget(AgeLineEdit,0,1);MainLayout->addWidget(DepartmentLabel,1,0);MainLayout->addWidget(DepartmentComboBox,1,1);MainLayout->addWidget(EmailLabel,2,0);MainLayout->addWidget(EmailEdit,2,1);DetailWidget->hide();}

main.cpp

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

运行图

初始化隐藏

在这里插入图片描述

展现–点击–详细按钮

在这里插入图片描述


http://www.ppmy.cn/embedded/97515.html

相关文章

java jvm默认用的垃圾回收器

Java JVM&#xff08;Java虚拟机&#xff09;的默认垃圾回收器取决于所使用的Java版本。以下是不同Java版本下JVM默认垃圾回收器的概述&#xff1a; JDK 8及之前版本 默认垃圾回收器&#xff1a;Parallel Scavenge&#xff08;新生代&#xff09; Serial Old&#xff08;老年…

超详细!!!electron-vite-vue开发桌面应用之引入UI组件库element-plus(四)

云风网 云风笔记 云风知识库 一、安装element-plus以及图标库依赖 npm install element-plus --save npm install element-plus/icons-vue npm i -D unplugin-icons二、vite按需引入插件 npm install -D unplugin-vue-components unplugin-auto-importunplugin-vue-componen…

仿RabbitMq实现简易消息队列正式篇(路由匹配篇)

TOC 目录 路由匹配模块 代码展示 路由匹配模块 决定了一条消息是否能够发布到指定的队列 在每个队列根交换机的绑定信息中&#xff0c;都有一个binding_key&#xff08;在虚拟机篇有说到&#xff09;这是队列发布的匹配规则 在每条要发布的消息中&#xff0c;都有一个rout…

2024.8完善版 NineAi-ChatGPT系统源码

Nine AI.ChatGPT是基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代…

老师简单易用的分班查询神器

随着新学期的到来&#xff0c;学校和老师们面临着一项重要任务&#xff1a;确保每位家长都能及时准确地获取孩子的分班信息。传统的分班通知方式&#xff0c;如纸质通知、校园公告板或电话短信通知&#xff0c;不仅效率低下&#xff0c;而且容易出错。为了解决这一问题&#xf…

如何避免Mysql RR 隔离级别下的 INSERT 死锁

背景 我们公司架构师&#xff0c;在使用 Mysql 做分布式锁的时候&#xff0c;因 insert 唯一键冲突&#xff0c;造成死锁。引起我对这部分知识点的兴趣和研究。 死锁日志的详细信息如下&#xff1a; LATEST DETECTED DEADLOCK ------------------------ 2024-08-19 16:32:45 0…

iPhone很多空相簿怎么删除:简化你的照片库

随着我们使用iPhone拍摄越来越多的照片和视频&#xff0c;管理这些内容的需求也随之增加。创建相簿是组织照片的一种便捷方式&#xff0c;但随着时间的推移&#xff0c;可能会产生许多未使用或空的相簿。这些空相簿不仅占用了照片应用的界面空间&#xff0c;也让照片库显得更加…

转行网络安全,应该选哪个方向?(非常详细)零基础入门到精通,收藏这一篇就够了

随着互联网技术的快速发展和广泛应用&#xff0c;网络安全形势日益严峻&#xff0c;各种网络攻击和安全威胁不断涌现&#xff0c;给个人、企业乃至国家带来了巨大的风险。为了应对网络风险&#xff0c;网络安全越来越被重视&#xff0c;开始成为入行互联网的备选岗位。 网络安…