Estoy usando un QTabWidget
y necesito una forma de manejar el cambio de la pestaña actual antes de que realmente suceda, y posiblemente cancelarla si se cumplen ciertas condiciones. La señal QTabWidget::currentChanged
se recibe después de que la pestaña actual haya cambiado, pero ¿hay una señal QTabWidget::currentChanging
u otra forma de lograr el comportamiento que necesito?¿Cómo identificar cuándo está cambiando la pestaña actual en un QTabWidget?
7
A
Respuesta
3
Esto es cómo lo resolví
void MainWindow::on_tabWidget_currentChanged(int index)
{
if (lockTabs) ui->tabWidget->setCurrentIndex(lockedTab);
}
El clic de un botón, me puse a lockTabs verdadera y guardar el índice ficha actual a lockedTab (int). No importa en qué pestaña haga clic, simplemente lo devolverá a la pestaña bloqueada.
Estoy de acuerdo con el primer comentario de que desactivar las pestañas es la mejor manera. Esta es mi solución para pestañas discapacitantes:
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
En mi caso, conectar la señal y la ranura de la siguiente manera:
//check if user clicked at a tab
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabSelected()));
y en tabSelected()
función, puedo comprobar Índice de fichas actual:
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
En su encabezado, declare:
QWidget *saveTab
Cree una rutina tabChanged
tenga la ranura para la señal currentChanged()
. Entonces:
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
Cuestiones relacionadas
- 1. Cambiando pestaña actual en Rails
- 2. Menú contextual de la pestaña QTabWidget
- 3. Establecer texto de etiqueta en la pestaña QTabWidget
- 4. Comprueba si la pestaña actual está vacía en vim
- 5. QTabWidget establece la fuente del título de una sola pestaña
- 6. Cambiando programáticamente la pestaña seleccionada de tabBarController
- 7. ¿Cómo identificar cuándo cambió SIM en iPhone?
- 8. ¿Cómo identificar si un usuario está siendo suplantado en Symfony2?
- 9. ¿Alguna forma de identificar la pestaña del navegador en JavaScript?
- 10. ¿Cómo identificar si la carpeta está abierta?
- 11. Perl cambiando el paquete actual?
- 12. vim - ¿cómo cerrar todos los buffers en la pestaña actual?
- 13. Saber cuándo un usuario está buscando en su sitio en el navegador vs otra pestaña/aplicación
- 14. ¿Cómo cambiar la alineación de texto en QTabWidget?
- 15. cómo obtener la pestaña actual de la página de fondo
- 16. Poner un botón de cierre en QTabWidget
- 17. powershell: cambiando la cultura de la sesión actual
- 18. Distinga el enlace abierto en la pestaña actual frente a la nueva pestaña
- 19. Pestaña Identificar que realizó una solicitud en Firefox Addon SDK
- 20. .Net WebBrowser.DocumentText no está cambiando!
- 21. Usando jquery easyui, ¿cómo crear una pestaña mediante un enlace que está en una pestaña?
- 22. QTabBar vs QTabWidget
- 23. Abra una nueva pestaña con javascript, pero quédese en la pestaña actual
- 24. Cambiando Visual Studio 2008 Nueva posición de pestaña
- 25. ¿Cómo identificar cuándo se ha cambiado el DOM?
- 26. La orientación de foto capturada está cambiando en android
- 27. ¿Cómo identificar que se está ejecutando en una máquina virtual?
- 28. ¿Dónde está la pestaña "Aplicación de MonoDevelop"?
- 29. Recibir una notificación cuando se selecciona la pestaña actual nuevamente
- 30. jQuery: ¿Cómo puedo saber cuándo una pestaña/ventana gana foco?
No creo que exista tal gancho ... tendrías que voltear manualmente. Pero esto no parece una muy buena opción de interfaz de usuario. ¿Por qué no haría que el estado de habilitación de la pestaña reflejara su disponibilidad en lugar de intentar "rechazar" un clic en una pestaña de aspecto válido? http://doc.qt.nokia.com/latest/qtabwidget.html#setTabEnabled – HostileFork
¿Sería posible subclasificar QTabWidget? No he hecho ninguna investigación sobre el asunto; es solo una idea –
Tuvimos exactamente este problema y finalmente decidimos escribir un widget TabWidget personalizado desde el principio, lo que produjo una señal de cambio y permitió a los objetos vetar los cambios propuestos. Habiendo dicho eso, hubiera elegido usar el método propuesto por @HostileFork si hubiera sido una opción. – sjwarner