我对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,但没有,呃,选项卡。