簡體   English   中英

QT5 Widgets 大小切換問題

[英]QT5 Switching between Widgets size problem

我嘗試在 QT5 中的兩個不同 Widget 之間切換。 第一個問題是我的第一個 window 在我的第二個 window 的背景中可見。 我通過檢查“autoFillBackground”來解決這個問題。 現在我可以在它們之間切換,但如果我調整它們的大小,它只會調整主要內容的大小。

兩個小部件都有網格布局。

調整大小問題

我是 QT5 的新手,那么有沒有更好的方法可以在沒有這個問題的情況下在 2 個小部件之間進行切換?

我嘗試使用wMessages = new Messages(); hide()但是我的程序在返回后崩潰了。


代碼:

主窗口.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

主窗口.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();
}

消息.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

消息.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 - 工作主 Window 按鈕(來自 GM 的回答):

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

更新(基於評論):

最好的解決方案是使用QStackedWidget在視圖之間導航。

文檔 https://doc.qt.io/qt-5/qstackedwidget.html#details


按鈕的示例代碼:

// return back to first view
void MainWindow::on_btnret_clicked()
{
    ui->stackedWidget->setCurrentIndex(0);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM