QGroupBox应用,extension widget create!

应用的是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();

实现这个效果,里面还需要对整个布局做一下size设置:setSizeConstraint(QLayout::SetFixedSize),这样就可以自动切换界面的大小!

你可能感兴趣的:(qt,QGroupBox)