主窗口mainwindow ,有几个QWidget:widget1,widget2,.........
想交替使用widget1,widget2...作为centerWidget,
可以关联信号和槽,必要时使用setCenterWidget(widgetn),修改当前中央部件
查看手册:
void QMainWindow::setCentralWidget ( QWidget * widget )
Sets the given widget to be the main window's central widget.
Note: QMainWindow takes ownership of the widget pointer and deletes it at the appropriate time.
设置为中央部件后widget由QMainWindow管理,appropriate time 在适合时候删除它,包括窗口关闭和再次调用setCenterWidget
所以每个widget在第一次调用时都没有问题,等再次调用时会报错,因为已经被QMainWindow删除了
有一个修改方法是,重写setCenterWidget 函数 ,调用setCenterWidget前将可能存在的centerWidget的所有权释放:
void MainWindow::setCentralWidget(QWidget *widget)
{
QWidget * curWidget = this->centralWidget();
if(curWidget)
curWidget->setParent(NULL);
this->setCentralWidget(widget);
}
QStackedWidget *pagesWidget;
pagesWidget = new QStackedWidget;
pagesWidget->addWidget(page1);
pagesWidget->addWidget(page2);
pagesWidget->addWidget(page3);
交替当前项使用函数
pagesWidget->setCurrentIndex(n)
参考:
http://qtforum.org/article/31828/question-on-qmainwindow-setcentralwidget.html