[英]error: 'QTabWidget::QTabWidget(const QTabWidget&)' is private
[英]QTabWidget setCurrentIndex not working as expected
如果满足某个条件,当用户单击QTabWidget
的第二个选项卡时,我试图将视图更改为主选项卡,但是当我在on_tabWidget_tabBarClicked()
内调用setCurrentIndex()
on_tabWidget_tabBarClicked()
,视图将保留在当前选项卡上。 请参阅下面的代码。
如果我在on_tabWidget_tabBarClicked()
setCurrentIndex()
之外调用setCurrentIndex()
on_tabWidget_tabBarClicked()
,那么它可以工作。
void MainWindow::on_tabWidget_tabBarClicked(int index)
{
if (index == 1)
{
Error("Empty, back to main");
ui->tabWidget->setCurrentIndex(0);
}
}
您的情况下的问题是,当信号被触发时,即使您的鼠标位于QTabWidget上,因此即使您使用setCurrentIndex(0)更改选项卡,鼠标事件也会将其更改回1.在这种情况下逻辑是更改它片刻之后,使用了QTimer:
void MainWindow::on_tabWidget_tabBarClicked(int index)
{
if(index==1)
{
Error("Empty, back to main");
QTimer::singleShot(100, [this](){ ui->tabWidget->setCurrentIndex(0); });
}
}
使用插槽on_tabWidget_currentChanged而不是tabBarClicked也可以正常工作,因为一旦选项卡更改完成就会调用它。 这样可以避免调用异步QTimer的需要。
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (index == 1)
{
Error("Empty, back to main");
ui->tabWidget->setCurrentIndex(0);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.