widget之间可以设置父子关系。
如同:widget *ptr = new widget( fatherWidget );
那么ptr被设置成fatherWidget的子widget。



相关的代码:
child widget:

class Form : public QWidget
{
    Q_OBJECT

public:
    explicit Form(QWidget *parent = nullptr);
    ~Form();

private:
    Ui::Form *ui;
};

MainWindow类

MainWindow::MainWindow(QWidget *parent) :
    ...
    childForm( new Form(this) ),
    ...
{
    childForm->hide();
    ...
}

void MainWindow::on_showButton_clicked()
{
    childForm->show();
}

void MainWindow::on_hideButton_clicked()
{
    childForm->hide();
}

如果我们也像widget那样操作Dialog,得到的结果不是我们想要的嵌套。
Dialog并不能直接嵌套到MainWindow里面。



事实上,我们只需要在new出Dialog之后再进行如下的设置:

    dialog->setWindowFlags(Qt::FramelessWindowHint);
    dialog->move(10, 10);

一切顺利:



All code source:
https://github.com/theArcticOcean/qtLib/tree/master/FatherWidget

 

Categories: C plus plus

Leave a Reply

Your email address will not be published. Required fields are marked *