如何恢复QMainWindow的初始中心部件?

时间:2011-07-04 19:09:38

标签: c++ qt user-interface qt4

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

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

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

2 个答案:

答案 0 :(得分:2)

当新的子窗口小部件被指定为子窗口小部件时,它似乎会删除子窗口小部件。下面的代码说明了它并显示了解决方法

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

答案 1 :(得分:0)

你想要QStackedWidget吗?这是一个但不像QTabWidget,但没有,呃,标签。