簡體   English   中英

QTabWidget setCurrentIndex無法按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM