通过纯代码实现一个简单的扩展窗口
基础窗口:
扩展窗口:
头文件:
#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()
{
}