gpt4 book ai didi

c++ - 如何恢复 QMainWindow 的初始 centralwidget?

转载 作者:行者123 更新时间:2023-11-30 04:33:42 25 4
gpt4 key购买 nike

我对 Qt 有点陌生,所以决定稍微尝试一下,以便有一天我可以用 GUI 制作一些程序。我一直在玩 Windows 并遇到了一个问题。除了 QMainWindow 之外,我还创建了两个新的 QWidget Form 类。使用其中之一,我能够制作一个单独的窗口弹出和消失。我想用第二个做的是......

我有一个带有按钮的 MainWindow,当按下该按钮时,CentralWidget 变为带有另一个按钮的 QWidget。然后,当我按下新按钮上的按钮时,它会将 CentralWidget 恢复为原始按钮。

我确实尝试在更改之前存储初始的 CentralWidget,但我还没有能够成功恢复它。我知道 QStackedWidget,但我想知道是否有另一种方法。谢谢!

最佳答案

似乎 Qt 删除了子 widget,当新的一个被指定为子 widget 时。下面的代码对此进行了说明并显示了解决方法

class QMyWidget: public QWidget
{
public:
~QMyWidget(){std::cout<<"Destroyed"<<std::endl;}
};

class QMyWidget2: public QWidget
{
public:
~QMyWidget2(){std::cout<<"Destroyed2"<<std::endl;}
};

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

QWidget * w = new QMyWidget2();
this->setCentralWidget(w);
w->setParent(NULL);
this->setCentralWidget(new QWidget);

}

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

关于c++ - 如何恢复 QMainWindow 的初始 centralwidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com