Я использую QTabWidget
, и мне нужен способ обработать изменение текущей вкладки до ее фактического завершения и, возможно, отменить ее, если выполняются определенные условия. Сигнал QTabWidget::currentChanged
принимается после того, как текущая вкладка изменилась, но есть ли сигнал QTabWidget::currentChanging
или другой способ достижения необходимого мне поведения?Как определить, меняется ли текущая вкладка в QTabWidget?
7
A
ответ
3
Это, как я решил его
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (lockTabs) ui->tabWidget->setCurrentIndex(lockedTab);
}
На нажатием одной кнопки, я поставил lockTabs к истинным и сохранить текущий индекс вкладки для 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
В моем случае, я соединяю SIGNAL и 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. Вкладка QTabWidget не отображается
- 2. Как определить, была ли нажата текущая выбранная вкладка?
- 3. Можно ли определить, имеет ли текущая вкладка браузера история?
- 4. Вкладка контекстного меню вкладки QTabWidget
- 5. QTabWidget: определить страницы для QTableWidget
- 6. Текущая вкладка в навигационной панели
- 7. Расширение Safari 5: как определить, когда изменилась текущая вкладка окна?
- 8. Как изменить высоту и ширину вкладка QTabWidget
- 9. Текущая вкладка перезагрузки JQuery
- 10. Вкладка Содержание не меняется
- 11. Как определить, олицетворяется ли текущая нить?
- 12. Как определить, закрыта ли родительская вкладка
- 13. Как определить, создана ли вкладка из расширения?
- 14. Как определить, воспроизводится ли вкладка Chrome?
- 15. Html - активная вкладка не меняется
- 16. Как узнать, какой тип объекта занимает вкладка QTabWidget?
- 17. Угловая + bootstrap-ui, проверьте, активна ли текущая вкладка
- 18. Как определить, текущая ли страница в {{#each pages}}?
- 19. текущая вкладка активна после перезагрузки страницы - bootsrap
- 20. Кнопки навигации TabControl/Определить, отображается ли вкладка
- 21. как определить, откуда активируется вкладка?
- 22. Как проверить, текущая ли текущая дата
- 23. Как остановить ребенка QTabWidget наследовать таблицу стилей от родительского QTabWidget
- 24. Ошибка: «QTabWidget :: QTabWidget (const QTabWidget &)» является приватным
- 25. Сборка x86 как определить, заполнена ли текущая страница
- 26. Как определить, какова текущая стабильная версия Ruby?
- 27. Вкладка QTabWidget ничего не отображает на одной из вкладок
- 28. Как определить, какая вкладка выбрана в FragmentActivity?
- 29. Rails: Определить, заканчивается ли текущая страница в «/ foo»
- 30. Избегайте дублирования вкладок в QTabWidget
Я не верю, что есть такой крючок ... вам придется вручную откинуться назад. Но это не похоже на очень хороший пользовательский интерфейс. Почему бы вам не включить состояние включения вкладки, чтобы оно отражало его доступность, вместо того, чтобы пытаться «отклонить» щелчок на вкладке с корректным отображением? http://doc.qt.nokia.com/latest/qtabwidget.html#setTabEnabled – HostileFork
Будет ли возможно подкласс QTabWidget? Я не проводил никаких исследований по этому вопросу; это просто идея. –
У нас была именно эта проблема, и в конечном итоге она решила написать пользовательский TabWidget с нуля, который вызвал сигнал о замене и позволил объектам наложить вето на предлагаемые изменения. Сказав, что я бы выбрал использовать метод, предложенный @HostileFork, если бы это был вариант. – sjwarner