Tengo una aplicación Qt que usa una clase QMainWindow
-derivada para la interfaz de usuario principal. Al inicio, quiero hacer algunas comprobaciones de seguridad y, si fallan, mostrar un mensaje al usuario y cerrar la ventana principal. Actualmente realizo estas comprobaciones en el constructor QMainWindow
, pero si llamo al método close
, no ocurre nada y la aplicación continúa ejecutándose. Por ejemplo:¿Cerrar una QMainWindow en el inicio?
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
setupUi(this);
...
if (checkFails())
{
QMessageBox::warning(this, tr("Error"), tr("You cannot run this app"));
// This has no effect
close();
}
}
alternativa que podría hacer las comprobaciones en la función principal, pero entonces perdería la capacidad de mostrar un cuadro de mensaje específico del lenguaje (la tr
macro sólo funciona en una clase derivada de QObject
por el aspecto de cosas).
¿Alguna idea sobre cómo cerrar la ventana principal al iniciar o hacer que la macro tr
funcione fuera de una clase derivada de QObject
?