QT5在小部件之间切换大小问题

时间:2020-05-14 12:50:51

标签: c++ qt qt5

我尝试在QT5中的两个不同的小部件之间切换。 第一个问题是在第二个窗口的背景中可以看到我的第一个窗口。我通过在“ autoFillBackground”中进行检查来解决此问题。现在,我可以在它们之间切换,但是如果我调整它们的大小,它只会调整主要内容的大小。

两个小部件都具有网格布局。

调整大小问题

我是QT5的新手,那么有没有更好的方法可以在2个小部件之间进行切换而不会出现此问题?

我用wMessages = new Messages();hide()进行了尝试,但是返回后我的程序崩溃了。


代码:

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "messages.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_btnMessages_clicked();

private:
    Ui::MainWindow *ui;
    Messages *wMessages;
};
#endif // MAINWINDOW_H

mainwindow.cpp:

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

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

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

void MainWindow::on_btnMessages_clicked()
{
    wMessages = new Messages(this); 
    wMessages->show();
}

messages.h:

#ifndef MESSAGES_H
#define MESSAGES_H

#include <QWidget>

namespace Ui {
class Messages;
}

class Messages : public QWidget
{
    Q_OBJECT

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

    QString NewsGenerator();
private slots:
    void on_bBack_clicked();

    void on_pushButton_clicked();

private:
    Ui::Messages *ui;
};

#endif // MESSAGES_H

messages.cpp:

#include "messages.h"
#include "ui_messages.h"

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

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

void Messages::on_bBack_clicked()
{
    this->close();
    QWidget *parent = this->parentWidget();
    parent->show();
}

编辑1 -工作的主窗口按钮(摘自G.M.的回答):

void MainWindow::on_btnMessages_clicked()
{
    wPlaner = new Planer();
    QMainWindow::setCentralWidget(wPlaner);
}

0 个答案:

没有答案