[英]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.