背景:
tabwidget有多个widget,每进一个要输入密码,在输入密码界面时,widget还是当前widget而不是想进的那一个;当密码正确时,才能进相应窗口。
问题:
假设index为0,在on_tabWidget_tabBarClicked(int index)函数中,若设置ui->tabWidget->setCurrentIndex(1),这语句没用,
因为on_tabWidget_tabBarClicked(int index)本身默认但凡点击了它,函数结束时,还是会进入之前的index的窗口,即0号窗口。
改进方法:
联合使用on_tabWidget_tabBarClicked(int index)和on_tabWidget_currentChanged(int index)。
如下源码。用变量tabWidget_pre_index记住想进的index,然后在on_tabWidget_currentChanged(int index)中实现进。
void MainWindow::on_tabWidget_tabBarClicked(int index)
{
if(index==0)
tabWidget_pre_index=0;//用于最开始或后面index从其它数切回0时,能回到0页面
else {
Login *login1 = new Login;//密码输入对话框
if(login1->exec()==QDialog::Accepted){
tabWidget_pre_index=index;
}
}
}
void MainWindow::on_tabWidget_currentChanged(int index)
{
ui->tabWidget->setCurrentIndex(tabWidget_pre_index);
}