我正在尝试用新的框架替换框架。第一个函数工作正常并且框架被替换,但是当我尝试恢复时,在第二个函数上,调试正确地显示“blah”,但除此之外,没有任何反应。
void MainWindow::on_actionPageViewer_triggered()
{
ui->gridLayout->removeWidget(sc_e->ui->widget);
ui->gridLayout->addWidget(sc_p->ui->widget);
}
void MainWindow::on_actionEditor_triggered()
{
qDebug()<< "blah";
ui->gridLayout->removeWidget(sc_p->ui->widget);
ui->gridLayout->addWidget(sc_e->ui->widget);
}
答案 0 :(得分:0)
调用ui->gridLayout->removeWidget(QWidget*)
会删除小部件,因此无法再添加。我可以在初始化时添加所有小部件,而不是删除它,然后使用setVisible()
使其显示或隐藏它。
所以现在代码看起来像这样:
在初始化中:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->gridLayout->addWidget(sc_e->ui->widget);
ui->gridLayout->addWidget(sc_p->ui->widget);
sc_p->ui->widget->setVisible(false);
}
然后:
void MainWindow::on_actionPageViewer_triggered()
{
ui->gridLayout->update();
sc_e->ui->widget->setVisible(false);
sc_p->ui->widget->setVisible(true);
}
void MainWindow::on_actionEditor_triggered()
{
qDebug()<< "blah";
sc_p->ui->widget->setVisible(false);
sc_e->ui->widget->setVisible(true);
}
答案 1 :(得分:0)
在将小部件添加到布局后,您是否尝试显示()小部件?