我正在使用QTabWidget
,我需要一種方法來處理當前選項卡實際發生之前的更改,並且如果滿足某些條件可能會取消它。在當前選項卡更改後接收到QTabWidget::currentChanged
信號,但是有沒有一個QTabWidget::currentChanging
信號或其他方式來實現我需要的行爲?如何識別當前選項卡在QTabWidget中更改的時間?
7
A
回答
3
這是我如何解決它
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (lockTabs) ui->tabWidget->setCurrentIndex(lockedTab);
}
上的一個按鈕的點擊,我設置lockTabs爲true,並保存當前選項卡索引lockedTab(INT)。無論您點擊哪個標籤,只會將您帶回鎖定的標籤。
我同意第一個評論,禁用選項卡是更好的方式壽。這是我的禁用標籤解決方案:
void MainWindow::lockTabs(int except){
for (int i=0; i<ui->tabWidget->count(); i++) {
if (i!=except) ui->tabWidget->setTabEnabled(i, false);
}
}
void MainWindow::unlockTabs() {
for (int i=0; i<ui->tabWidget->count(); i++) {
ui->tabWidget->setTabEnabled(i, true);
}
}
5
就我而言,我連接信號和SLOT是這樣的:
//check if user clicked at a tab
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabSelected()));
和tabSelected()
功能,我查看當前Tab鍵索引:
void MainWindow::tabSelected(){
if(ui->tabWidget->currentIndex()==0){
// Do something here when user clicked at tab1
}
if(ui->tabWidget->currentIndex()==3){
// Do something here when user clicked at tab4
}
}
1
在你的頭,聲明:
QWidget *saveTab
創建例程tabChanged
有currentChanged()
信號的插槽。然後:
void pkgName::tabChanged
//"ask your question"
if "bad reply"
// This is where you'll "set back to your old tab"
ui->tabWidget->setCurrentWidget(savedWidget)
end if
savedWidget = ui->tabWidget-> getCurrentWidget()
// Process
相關問題
- 1. 在QT中標識選項卡Qtabwidget
- 2. 使用按鈕更改QTabWidget選項卡
- 3. 如何按名稱設置QTabWidget的當前選項卡?
- 4. Python:如何從QTabWidget查詢當前選項卡
- 5. 通過樣式表識別特定的QTabWidget選項卡
- 6. 更改QTabWidget中選定選項卡的光標
- 7. 如何識別Magento中的選項卡?
- 8. 如何更改高度和寬度QTabWidget選項卡
- 9. 當我更改HTML中的選項卡時如何刷新iframe的選項卡
- 10. 如何在tablayout上更改選項卡時識別相同的選項卡或片段?
- 11. 如何識別何時選擇了選項(不一定更改)?
- 12. 從QTabWidget拖放選項卡
- 13. TabHost在選項卡更改後獲取之前的選項卡
- 14. 如何打開新選項卡並更改當前頁
- 15. 如何識別瀏覽器選項卡?
- 16. LWUIT:選項卡 - 如何標記當前選定的選項卡
- 17. 僅在當前組/窗格中更改選項卡
- 18. 避免QTabWidget中重複的選項卡
- 19. Phaser - 如何在更改Web選項卡時保持補間?
- 20. QTabWidget上的關閉按鈕而不是QTabWidget中的選項卡
- 21. 如何在QTabWidget的特定選項卡中引用小部件?
- 22. JTabbedPane:更改選項卡標題時更改選項卡大小
- 23. 更改選項卡式窗格中當前面板的標籤
- 24. 如何用Javascript更改當前時間
- 25. 更改個別選項卡的顏色
- 26. 如何更改VSCode上的CTRL +選項卡作爲瀏覽器之間的選項卡之間的選項卡?
- 27. 如何在Android ViewPager中更改當前選項卡高亮顏色?
- 28. 如何在QTabWidget中的兩個選項卡之間插入空格?
- 29. p:selectOneMenu在選項卡變更時更改
- 30. 如何識別SIM在iPhone中更改時間?
我不相信有這樣的鉤子......你將不得不手動翻轉回來。但這聽起來不像是一個非常好的用戶界面選擇。爲什麼不讓標籤的啓用狀態反映其可用性,而不是試圖「拒絕」在有效標籤上的點擊? http://doc.qt.nokia.com/latest/qtabwidget.html#setTabEnabled – HostileFork
QTabWidget可以繼承嗎?我對此事沒有做過任何研究;這只是一個想法。 –
我們正是這個問題,最終選擇了從頭開始編寫一個自定義的TabWidget,它產生了一個即將改變的信號,並允許對象否決提議的更改。話雖如此,我會選擇使用@HostileFork提出的方法,如果這是一個選項。 – sjwarner