如何恢复QMainWindow的初始centralwidget



我对Qt有点陌生,决定试着玩一玩,这样有一天我就可以用GUI制作一些程序了。我一直在玩窗户,遇到了一个问题。除了QMainWindow之外,我还创建了两个新的QWidget Form类。有了其中一个,我可以制作一个单独的弹出窗口并消失。我想用第二个来做的是。。。

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

在更改初始CentralWidget之前,我确实尝试过存储它,但我还无法成功恢复它。我确实知道QStackedWidget,但我想知道是否有其他方法。谢谢!

当新的小部件被分配为子小部件时,Qt似乎删除了子小部件。休耕代码说明了这一点,并显示了解决方法

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;
}

您想要QStackedWidget吗?这是一个但类似QTabWidget,但没有,呃,选项卡。

相关内容

  • 没有找到相关文章

最新更新