QT扩展窗口

通过纯代码实现一个简单的扩展窗口
基础窗口:
在这里插入图片描述
扩展窗口:
在这里插入图片描述

头文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    void showdetial();//显示隐藏窗口
    ~Widget();
private:
     void creatbasewidget();//创建基础窗口
     void creatdetialwidget();//创建隐藏窗口
     QWidget *basewidget;
     QWidget *detialwidget;
};

#endif // WIDGET_H

源文件:

#include "widget.h"
#include<QVBoxLayout>
#include<QLabel>
#include<QLineEdit>
#include<QPushButton>
#include<QGridLayout>
#include<QHBoxLayout>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    setWindowTitle("扩展窗口");
    creatbasewidget();
    creatdetialwidget();
    QVBoxLayout *layout=new QVBoxLayout(this);
    layout->setSpacing(10);
    layout->addWidget(basewidget);
    layout->addWidget(detialwidget);
    layout->setSizeConstraint(QLayout::SetFixedSize);//窗口固定
}
//基础窗口
void Widget::creatbasewidget()
{
    basewidget=new QWidget();
    QLabel *namelabel=new QLabel("姓名:");
    QLineEdit *nameline=new QLineEdit;
    QPushButton *detial=new QPushButton("detial");
    QGridLayout *base=new QGridLayout(basewidget);
    base->setSpacing(10);
    base->setMargin(10);
    base->addWidget(namelabel,0,0);
    base->addWidget(nameline,0,1);
    base->addWidget(detial,1,10);
    connect(detial,&QPushButton::clicked,this,&Widget::showdetial);
}
//扩展窗口
void Widget::creatdetialwidget()
{
    detialwidget=new QWidget();
    QLabel *agelabel=new QLabel("年龄:");
    QLineEdit *ageline=new QLineEdit();
    QHBoxLayout *detail=new QHBoxLayout(detialwidget);
    detail->setSpacing(10);
    detail->setMargin(10);
    detail->addWidget(agelabel);
    detail->addWidget(ageline);
    detialwidget->hide();
}
//显示扩展窗口
void Widget::showdetial()
{
    if(detialwidget->isHidden())
    {
        detialwidget->show();
    }
    else
    {
        detialwidget->hide();
    }
}
Widget::~Widget()
{

}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值