簡體   English   中英

無法從 MainWindow 打開 Widget

[英]Can't open Widget from the MainWindow

我想從我的 MainWindow 打開一個小部件。 我認為這很容易做到,我閱讀的所有教程都是這樣做的:

void MainWindow::on_pushButton_Types_clicked()
{
    m_typesWin = new TypesWindow(m_db, this);
    m_typesWin->show();
    this->hide();
}

但是,如果我不將“this”傳遞給構造函數,這只對我有用。 當我將“this”添加到構造函數時,我沒有看到小部件,程序只是停止了。 如果我不隱藏“this”,那么我可以看到我的小部件的一部分實際上在我的主窗口中。 我不知道為什么。

編輯:這些類是由 QtCreator 自動創建的,所以它們應該沒問題。

如果您希望將 QWidget 顯示為窗口,則不應為該小部件指定父小部件。 在這里,由於您將主窗口指定為 TypesWindow 的父窗口,因此 TypesWindow 將嵌入到主窗口中。 所以當你隱藏主窗口時,嵌入在主窗口中的 TypesWindow 也會被隱藏。

由於您希望 TypesWindow 成為一個單獨的窗口,因此不要將父窗口小部件傳遞給 TypesWindow 構造函數中的 QWidget 構造函數。 如果要從 TypesWindow 訪問主窗口,可以將主窗口指針存儲在 TypesWindow 的指針字段中。

從新的 Qwidget 打開 Mainwindows:

1) 在 NEWWIDGET.CPP 中:

QWidget *w;

NEWWIDGET::NEWWIDGET(QWidget *parent,QWidget *win) :
  QWidget(parent),
  ui(new Ui::NEWWIDGET)
{
  ui->setupUi(this);
  w=win;
}

..

void NEWWIDGET::on_pushButton_clicked()
{
  this->hide();
  w->show();
}

2) 在 NEWWIDGET.H

public:
    explicit NEWWIDGET(QWidget *parent=nullptr,QWidget *win=nullptr);
    ~NEWWIDGET();

暫無
暫無

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

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