我是Qt的新手,并决定稍微使用它,以便有一天我可以用GUI制作一些程序。我一直在玩Windows并遇到问题。除了QMainWindow之外,我还创建了两个新的QWidget Form类。有了其中一个,我就可以弹出一个单独的窗口并消失。我想用第二个做的就是这个......
我有一个带按钮的MainWindow,当按下该按钮时,CentralWidget会用另一个按钮切换到QWidget。然后,当我按下新按钮上的按钮时,它会将CentralWidget恢复为原始按钮。
我确实尝试在更改之前存储初始CentralWidget,但我还没有能够成功恢复它。我知道QStackedWidget,但我想知道是否还有另一种方法。谢谢!
答案 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,但没有,呃,标签。