Qt布局相关知识点

该文章对布局相关的知识点进行总结。

  • 在一个ui已经设计布局的情况下,一个子页面或者子控件显示到该ui中,是否会打破原有布局?

假设一个ui界面整体设计为水平布局,如果这个时候创建一个新的子界面或者子控件,并且设该子控件或者子界面的父控件为该ui界面,意思是该控件需要显示该ui对应的窗口中,这种情况下新的子控件或者子界面是否受原来的布局的影响或者破坏原有的布局?

结论:不受影响,并不会破坏原有的布局,界面可以正常显示。

工程下载地址:工程链接

代码如下:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class mywidget;
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    mywidget* m_widget;
};

#endif // MAINWINDOW_H

mainwindow.cpp如下所示:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mywidget.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //通过该项目的验证说明了如果一个ui设计了布局,如果重新生成了一个子界面,并且设计该布局的页面为新控件的父控件,zai
    //这种情况下子界面不受布局的影响
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    m_widget = new mywidget(this);
    m_widget->setGeometry(QRect(100,100,400,300));
    m_widget->show();
}

void MainWindow::on_pushButton_2_clicked()
{
    if(m_widget)
        m_widget->hide();
}

mywidget.h代码如下:

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>

namespace Ui {
class mywidget;
}

class mywidget : public QWidget
{
    Q_OBJECT

public:
    explicit mywidget(QWidget *parent = 0);
    ~mywidget();

private:
    Ui::mywidget *ui;
};

#endif // MYWIDGET_H

mywidget.cpp代码:

#include "mywidget.h"
#include "ui_mywidget.h"

mywidget::mywidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::mywidget)
{
    ui->setupUi(this);
    setAttribute(Qt::WA_StyledBackground);
}

mywidget::~mywidget()
{
    delete ui;
}

main.cpp如下所示:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

效果显示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值