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