应用的是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();
}
}
定义是一定要是slots:,虽说Qt的信号和槽机制比较方便,但是也是有问题的,信号和槽不通的话,不会报错,只能调试查看,主要是初级人员需要注意的!
入口执行如下:
QApplication a(argc, argv);
appExtend w;
w.show();
return a.exec();