Qt之tabwidget,每进一个widget要输密码,且输密码时当前页面不变

背景:

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);
}


版权声明:本文为zying555原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。