应用的是QDialog底层,创建extension工程,直接拖动QGroupBox,更改名称为Basic,里面创建两个QLabel 分别命名 Name ,Sex,分别对应QLineEdit和QComboBox,
拖入两个个QPushButton,分别为OK和Detail,然后分别格栅布局,形如:,
中间增加一个弹簧,主要是为了,平衡界面!扩展界面消失时,自动平衡界面大小。
对应的再建立一个QGroupBox,更改名称为Extension,对应显示Age,Department,Address。最后整体效果如下:
对应的信号和槽,可以直接走编辑里面的信号和槽,在界面操作,也可以再程序里面直接connect操作,
我这里用一个界面,一个程序中的。
appExtend::appExtend(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { ui.setupUi(this); ui.extensionGroupBox->hide(); ui.pushButton_2->setCheckable(true); // this->setSizeConstraint() connect(ui.pushButton_2, SIGNAL(toggled(bool)), this, SLOT(extentshow(bool))); // bool bok; // QString str = QInputDialog::getText(this,tr("user name"), tr("please enter new name"), // QLineEdit::Normal, QDir::home().dirName(), &bok); // setColor(); ui.verticalLayout_3->setSizeConstraint(QLayout::SetFixedSize); ui.closeButton->setFadeColor(Qt::red); setWindowFlags(Qt::FramelessWindowHint | Qt::Window | Qt::WindowMinMaxButtonsHint); } void appExtend::extentshow(bool bstate) { if (ui.extensionGroupBox->isVisible()) { ui.extensionGroupBox->hide(); }else{ ui.extensionGroupBox->show(); } }
入口执行如下:
QApplication a(argc, argv); appExtend w; w.show(); return a.exec();