En esta página

QCoreApplication Class

La clase QCoreApplication proporciona un bucle de eventos para aplicaciones Qt sin UI. Más...

Cabecera: #include <QCoreApplication>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Hereda: QObject
Heredado por:

QAndroidService y QGuiApplication

Propiedades

Funciones públicas

QCoreApplication(int &argc, char **argv)
virtual ~QCoreApplication()
(since 6.5) Qt::PermissionStatus checkPermission(const QPermission &permission)
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj)
virtual bool notify(QObject *receiver, QEvent *event)
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)
(since 6.5) void requestPermission(const QPermission &permission, Functor &&functor)
(since 6.5) void requestPermission(const QPermission &permission, const QObject *context, Functor functor)

Ranuras públicas

void exit(int returnCode = 0)
void quit()

Señales

Miembros públicos estáticos

void addLibraryPath(const QString &path)
QString applicationDirPath()
QString applicationFilePath()
QString applicationName()
qint64 applicationPid()
QString applicationVersion()
QStringList arguments()
bool closingDown()
QAbstractEventDispatcher *eventDispatcher()
int exec()
bool installTranslator(QTranslator *translationFile)
QCoreApplication *instance()
bool isQuitLockEnabled()
bool isSetuidAllowed()
QStringList libraryPaths()
QString organizationDomain()
QString organizationName()
void postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)
void processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents)
(since 6.7) void processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)
void processEvents(QEventLoop::ProcessEventsFlags flags, int ms)
void removeLibraryPath(const QString &path)
void removePostedEvents(QObject *receiver, int eventType = 0)
bool removeTranslator(QTranslator *translationFile)
bool sendEvent(QObject *receiver, QEvent *event)
void sendPostedEvents(QObject *receiver = nullptr, int event_type = 0)
void setApplicationName(const QString &application)
void setApplicationVersion(const QString &version)
void setAttribute(Qt::ApplicationAttribute attribute, bool on = true)
void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
void setLibraryPaths(const QStringList &paths)
void setOrganizationDomain(const QString &orgDomain)
void setOrganizationName(const QString &orgName)
void setQuitLockEnabled(bool enabled)
void setSetuidAllowed(bool allow)
bool startingUp()
bool testAttribute(Qt::ApplicationAttribute attribute)
QString translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1)

Funciones protegidas reimplementadas

virtual bool event(QEvent *e) override
void qAddPostRoutine(QtCleanUpFunction ptr)
void qRemovePostRoutine(QtCleanUpFunction ptr)

Macros

Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr)
Q_DECLARE_TR_FUNCTIONS(context)

Descripción Detallada

Esta clase es utilizada por aplicaciones no-GUI para proporcionar su bucle de eventos. Para aplicaciones no-GUI que usen Qt, debe haber exactamente un objeto QCoreApplication. Para aplicaciones GUI, ver QGuiApplication. Para aplicaciones que utilizan el módulo Qt Widgets, véase QApplication.

QCoreApplication contiene el bucle de eventos principal, donde se procesan y envían todos los eventos del sistema operativo (por ejemplo, eventos de temporizador y de red) y de otras fuentes. También maneja la inicialización y finalización de la aplicación, así como las configuraciones del sistema y de la aplicación.

El bucle de eventos y la gestión de eventos

El bucle de eventos se inicia con una llamada a exec(). Las operaciones de larga duración pueden llamar a processEvents() para mantener la capacidad de respuesta de la aplicación.

En general, recomendamos que crees un objeto QCoreApplication, QGuiApplication o QApplication en tu función main() tan pronto como sea posible. exec() no retornará hasta que el bucle de eventos salga; por ejemplo, cuando se llame a quit().

También se proporcionan varias funciones estáticas de conveniencia. El objeto QCoreApplication está disponible en instance(). Los eventos pueden enviarse con sendEvent() o enviarse a una cola de eventos con postEvent(). Los eventos pendientes pueden eliminarse con removePostedEvents() o enviarse con sendPostedEvents().

La clase proporciona una ranura quit() y una señal aboutToQuit().

Rutas de la aplicación y la biblioteca

Una aplicación tiene un applicationDirPath() y un applicationFilePath(). Las rutas de biblioteca (véase QLibrary) pueden recuperarse con libraryPaths() y manipularse con setLibraryPaths(), addLibraryPath() y removeLibraryPath().

Internacionalización y traducciones

Los archivos de traducción pueden añadirse o eliminarse con installTranslator() y removeTranslator(). Las cadenas de la aplicación pueden traducirse utilizando translate(). La función QObject::tr() está implementada en términos de translate().

Acceso a los argumentos de la línea de comandos

Los argumentos de la línea de comandos que se pasan al constructor de QCoreApplication deben ser accedidos usando la función arguments().

Nota: QCoreApplication elimina la opción -qmljsdebugger="...". Analiza el argumento de qmljsdebugger, y luego elimina esta opción más su argumento.

Para un manejo más avanzado de las opciones de la línea de comandos, cree un archivo QCommandLineParser.

Configuración regional

En Unix/Linux Qt está configurado para usar la configuración regional del sistema por defecto. Esto puede causar un conflicto al usar funciones POSIX, por ejemplo, al convertir entre tipos de datos como floats y strings, ya que la notación puede diferir entre locales. Para evitar este problema, llame a la función POSIX setlocale(LC_NUMERIC,"C") justo después de inicializar QApplication, QGuiApplication o QCoreApplication para restablecer la configuración regional que se utiliza para el formateo de números a la configuración regional "C".

Ver también QGuiApplication, QAbstractEventDispatcher, QEventLoop, Productor y Consumidor usando Semáforos, y Productor y Consumidor usando Condiciones de Espera.

Documentación de propiedades

applicationName : QString

Esta propiedad contiene el nombre de esta aplicación

El nombre de la aplicación se utiliza en varias clases y módulos de Qt, sobre todo en QSettings cuando se construye utilizando el constructor por defecto. Otros usos son en la salida de registro formateada (ver qSetMessagePattern()), en la salida de QCommandLineParser, en las rutas por defecto de QTemporaryDir y QTemporaryFile, y en algunas ubicaciones de archivos de QStandardPaths. Qt D-BusAccesibilidad y la integración de la plataforma XCB también utilizan el nombre de la aplicación.

Si no se establece, el nombre de la aplicación por defecto es el nombre del ejecutable.

Funciones de acceso:

QString applicationName()
void setApplicationName(const QString &application)

Señal del notificador:

void applicationNameChanged()

Véase también organizationName, organizationDomain, applicationVersion, y applicationFilePath().

applicationVersion : QString

Esta propiedad contiene la versión de esta aplicación

Si no se define, la versión de la aplicación se establece por defecto en un valor específico de la plataforma determinado a partir del ejecutable o paquete principal de la aplicación (desde Qt 5.9):

PlataformaFuente
Windows (escritorio clásico)parámetro PRODUCTVERSION del recurso VERSIONINFO
macOS, iOS, tvOS, watchOSPropiedad CFBundleVersion de la lista de propiedades de información
Androidpropiedad android:versionName del elemento de manifiesto AndroidManifest.xml

En otras plataformas, el valor predeterminado es la cadena vacía.

Funciones de acceso:

QString applicationVersion()
void setApplicationVersion(const QString &version)

Señal del notificador:

void applicationVersionChanged()

Véase también applicationName, organizationName, y organizationDomain.

organizationDomain : QString

Esta propiedad contiene el dominio de Internet de la organización que escribió esta aplicación.

El valor es utilizado por la clase QSettings cuando se construye utilizando el constructor por defecto. Esto ahorra tener que repetir esta información cada vez que se crea un objeto QSettings.

En Mac, QSettings utiliza organizationDomain() como organización si no es una cadena vacía; en caso contrario, utiliza organizationName(). En el resto de plataformas, QSettings utiliza organizationName() como organización.

Funciones de acceso:

QString organizationDomain()
void setOrganizationDomain(const QString &orgDomain)

Señal de notificador:

void organizationDomainChanged()

Véase también organizationName, applicationName, y applicationVersion.

organizationName : QString

Esta propiedad contiene el nombre de la organización que escribió esta aplicación.

El valor es utilizado por la clase QSettings cuando se construye utilizando el constructor por defecto. Esto ahorra tener que repetir esta información cada vez que se crea un objeto QSettings.

En Mac, QSettings utiliza organizationDomain() como organización si no es una cadena vacía; en caso contrario, utiliza organizationName(). En el resto de plataformas, QSettings utiliza organizationName() como organización.

Funciones de acceso:

QString organizationName()
void setOrganizationName(const QString &orgName)

Señal del notificador:

void organizationNameChanged()

Véase también organizationDomain y applicationName.

quitLockEnabled : bool

Esta propiedad mantiene si el uso de la característica QEventLoopLocker puede causar el abandono de la aplicación.

Cuando esta propiedad es true la liberación del último QEventLoopLocker restante operando en la aplicación intentará salir de la aplicación.

Tenga en cuenta que el intento de abandono puede no resultar necesariamente en el abandono de la aplicación, por ejemplo si todavía hay ventanas abiertas, o el evento QEvent::Quit es ignorado.

El valor por defecto es true.

Funciones de acceso:

bool isQuitLockEnabled()
void setQuitLockEnabled(bool enabled)

Véase también QEventLoopLocker.

Documentación de las funciones miembro

QCoreApplication::QCoreApplication(int &argc, char **argv)

Construye una aplicación Qt Core. Las aplicaciones core son aplicaciones sin interfaz gráfica de usuario. Estas aplicaciones se utilizan en la consola o como procesos de servidor.

Los argumentos argc y argv son procesados por la aplicación, y puestos a disposición en una forma más conveniente por la función arguments().

Advertencia: Los datos referidos por argc y argv deben permanecer válidos durante toda la vida del objeto QCoreApplication. Además, argc debe ser mayor que cero y argv debe contener al menos una cadena de caracteres válida.

[virtual noexcept] QCoreApplication::~QCoreApplication()

Destruye el objeto QCoreApplication.

[private signal] void QCoreApplication::aboutToQuit()

Esta señal se emite cuando la aplicación está a punto de salir del bucle de eventos principal, por ejemplo, cuando el nivel del bucle de eventos cae a cero. Esto puede ocurrir después de una llamada a quit() desde dentro de la aplicación o cuando el usuario cierra toda la sesión de escritorio.

La señal es particularmente útil si tu aplicación tiene que hacer alguna limpieza de último momento. Ten en cuenta que en este estado no es posible ninguna interacción con el usuario.

Nota: En este punto, el bucle de eventos principal sigue ejecutándose, pero no procesará más eventos a su regreso, excepto los eventos QEvent::DeferredDelete para objetos eliminados a través de deleteLater(). Si se necesita procesar eventos, utilice un bucle de eventos anidado o llame a QCoreApplication::processEvents() manualmente.

Nota: Esta es una señal privada. Puede ser utilizada en conexiones de señales pero no puede ser emitida por el usuario.

Véase también quit().

[static] void QCoreApplication::addLibraryPath(const QString &path)

Añade path al principio de la lista de rutas de bibliotecas, asegurándose de que se busquen las bibliotecas en primer lugar. Si path está vacío o ya se encuentra en la lista de rutas, ésta no se modifica.

La lista de rutas por defecto consta de una o dos entradas. La primera es el directorio de instalación de los plugins, que es INSTALL/plugins, donde INSTALL es el directorio donde se instaló Qt. La segunda es el propio directorio de la aplicación(no el directorio actual), pero sólo después de instanciar el objeto QCoreApplication.

Las rutas de las bibliotecas se restablecen a las predeterminadas cuando se destruye una instancia de QCoreApplication.

Véase también removeLibraryPath(), libraryPaths() y setLibraryPaths().

[static] QString QCoreApplication::applicationDirPath()

Devuelve el directorio que contiene el ejecutable de la aplicación.

Por ejemplo, si ha instalado Qt en el directorio C:\Qt, y ejecuta el ejemplo regexp, esta función devolverá "C:/Qt/examples/tools/regexp".

En macOS e iOS apuntará al directorio que contiene el ejecutable, que puede estar dentro de un paquete de aplicaciones (si la aplicación está empaquetada).

En Android, apuntará al directorio que contiene el ejecutable, que puede estar dentro del APK de la aplicación (si se creó con soporte de bibliotecas descomprimidas).

Advertencia: En Linux, esta función intentará obtener la ruta del sistema de archivos /proc. Si esto falla, asume que argv[0] contiene el nombre de archivo absoluto del ejecutable. La función también asume que el directorio actual no ha sido cambiado por la aplicación.

Véase también applicationFilePath().

[static] QString QCoreApplication::applicationFilePath()

Devuelve la ruta de archivo del ejecutable de la aplicación.

Por ejemplo, si ha instalado Qt en el directorio /usr/local/qt, y ejecuta el ejemplo regexp, esta función devolverá "/usr/local/qt/examples/tools/regexp/regexp".

Advertencia: En Linux, esta función intentará obtener la ruta del sistema de archivos /proc. Si esto falla, asume que argv[0] contiene el nombre de archivo absoluto del ejecutable. La función también asume que el directorio actual no ha sido modificado por la aplicación.

Véase también applicationDirPath().

[static noexcept] qint64 QCoreApplication::applicationPid()

Devuelve el ID del proceso actual de la aplicación.

[static] QStringList QCoreApplication::arguments()

Devuelve la lista de argumentos de la línea de comandos.

Normalmente arguments().at(0) es el nombre del programa, arguments().at(1) es el primer argumento y arguments().last() es el último argumento. Véase la nota siguiente sobre Windows.

Llamar a esta función es lento - deberías almacenar el resultado en una variable cuando analices la línea de comandos.

Advertencia: En Unix, esta lista se construye a partir de los parámetros argc y argv pasados al constructor en la función main(). Los datos de cadena en argv se interpretan utilizando QString::fromLocal8Bit(); por lo tanto, no es posible pasar, por ejemplo, argumentos de línea de comandos en japonés en un sistema que se ejecuta en una configuración regional Latin1. La mayoría de los sistemas Unix modernos no tienen esta limitación, ya que están basados en Unicode.

En Windows, la lista se construye a partir de los parámetros argc y argv sólo si se pasan al constructor parámetros argv/argc modificados. En ese caso, podrían producirse problemas de codificación.

En caso contrario, los argumentos() se construyen a partir del valor de retorno de GetCommandLine(). Como resultado de esto, la cadena dada por arguments().at(0) podría no ser el programa exacto utilizado para iniciar la aplicación en Windows.

Véase también applicationFilePath() y QCommandLineParser.

[since 6.5] Qt::PermissionStatus QCoreApplication::checkPermission(const QPermission &permission)

Comprueba el estado de la dirección permission

Si el resultado es Qt::PermissionStatus::Undetermined entonces se debe solicitar permiso a través de requestPermission() para determinar la intención del usuario.

Esta función se introdujo en Qt 6.5.

Véase también requestPermission() y Application Permissions.

[static] bool QCoreApplication::closingDown()

Devuelve true si se están destruyendo los objetos de la aplicación; en caso contrario devuelve false.

Véase también startingUp().

[override virtual protected] bool QCoreApplication::event(QEvent *e)

Reimplementa: QObject::event(QEvent *e).

[static] QAbstractEventDispatcher *QCoreApplication::eventDispatcher()

Devuelve un puntero al objeto despachador de eventos para el hilo principal. Si no existe un despachador de eventos para el hilo, esta función devuelve nullptr.

Véase también setEventDispatcher().

[static] int QCoreApplication::exec()

Entra en el bucle principal de eventos y espera hasta que exit() es llamado. Devuelve el valor que fue pasado a exit() (que es 0 si exit() es llamado a través de quit()).

Es necesario llamar a esta función para iniciar el manejo de eventos. El bucle principal de eventos recibe eventos del sistema de ventanas y los envía a los widgets de la aplicación.

Para hacer que su aplicación realice un procesamiento en reposo (ejecutando una función especial siempre que no haya eventos pendientes), utilice QChronoTimer con un tiempo de espera de 0ns. Se pueden conseguir esquemas de procesamiento inactivo más avanzados utilizando processEvents().

Le recomendamos que conecte el código de limpieza a la señal aboutToQuit(), en lugar de ponerlo en la función main() de su aplicación, porque en algunas plataformas la llamada a exec() puede no retornar. Por ejemplo, en Windows cuando el usuario cierra la sesión, el sistema termina el proceso después de que Qt cierre todas las ventanas de nivel superior. Por lo tanto, no hay garantía de que la aplicación tenga tiempo de salir de su bucle de eventos y ejecutar código al final de la función main() después de la llamada a exec().

Ver también quit(), exit(), processEvents(), y QApplication::exec().

[static slot] void QCoreApplication::exit(int returnCode = 0)

Indica a la aplicación que salga con un código de retorno.

Después de llamar a esta función, la aplicación sale del bucle de eventos principal y vuelve de la llamada a exec(). La función exec() devuelve returnCode. Si el bucle de eventos no se está ejecutando, esta función no hace nada.

Por convención, un returnCode de 0 significa éxito, y cualquier valor distinto de cero indica un error.

Es una buena práctica conectar siempre señales a esta ranura usando QueuedConnection. Si una señal conectada (no en cola) a esta ranura se emite antes de que el control entre en el bucle de eventos principal (como antes de que "int main" llame a exec()), la ranura no tiene efecto y la aplicación nunca sale. Usar una conexión en cola asegura que la ranura no será invocada hasta después de que el control entre en el bucle de eventos principal.

Observe que a diferencia de la función de la librería C del mismo nombre , esta función devuelve al llamador - es el procesamiento de eventos el que se detiene.

Observe también que esta función no es segura para hilos. Debe ser llamada sólo desde el hilo principal (el hilo en el que el objeto QCoreApplication está procesando los eventos). Para pedir a la aplicación que salga desde otro hilo, usa QCoreApplication::quit() o llama a esta función desde el hilo principal con QMetaMethod::invokeMethod().

Ver también quit() y exec().

void QCoreApplication::installNativeEventFilter(QAbstractNativeEventFilter *filterObj)

Instala un filtro de eventos filterObj para todos los eventos nativos recibidos por la aplicación en el hilo principal.

El filtro de eventos filterObj recibe eventos a través de su función nativeEventFilter(), que es llamada para todos los eventos nativos recibidos en el hilo principal.

La función QAbstractNativeEventFilter::nativeEventFilter() debe devolver true si el evento debe ser filtrado, es decir, detenido. Debería devolver false para permitir que el procesamiento normal de Qt continúe: el evento nativo puede entonces ser traducido a un QEvent y manejado por el filtrado estándar de Qt event, por ejemplo QObject::installEventFilter().

Si se instalan varios filtros de eventos, se activa primero el filtro que se instaló en último lugar.

Nota: La función de filtro establecida aquí recibe mensajes nativos, es decir, estructuras de eventos MSG o XCB.

Nota: Los filtros de eventos nativos se desactivarán en la aplicación cuando se establezca el atributo Qt::AA_PluginApplication.

Para obtener la máxima portabilidad, siempre que sea posible debe intentar utilizar QEvent y QObject::installEventFilter().

Véase también QObject::installEventFilter().

[static] bool QCoreApplication::installTranslator(QTranslator *translationFile)

Añade el archivo de traducción translationFile a la lista de archivos de traducción que se utilizarán para las traducciones.

Se pueden instalar varios archivos de traducción. Las traducciones se buscan en el orden inverso en el que se instalaron, de modo que primero se busca en el archivo de traducción instalado más recientemente y al final en el primer archivo de traducción instalado. La búsqueda se detiene en cuanto se encuentra una traducción que contenga una cadena coincidente.

La instalación o eliminación de un QTranslator, o la modificación de un QTranslator instalado genera un evento LanguageChange para la instancia QCoreApplication. Una instancia de QApplication propagará el evento a todos los widgets de nivel superior, donde una reimplementación de changeEvent puede volver a traducir la interfaz de usuario pasando cadenas visibles para el usuario a través de la función tr() a los respectivos definidores de propiedades. Las clases de interfaz de usuario generadas por Qt Widgets Designer proporcionan una función retranslateUi() que puede ser llamada.

La función devuelve true en caso de éxito y false en caso de fallo.

Nota: QCoreApplication no se apropia de translationFile. Es responsabilidad de la aplicación asegurarse de que, si la función devuelve true, el objeto translationFile esté vivo hasta que se llame a removeTranslator() o se cierre la aplicación.

Véase también removeTranslator(), translate(), QTranslator::load(), y Prepararse para los cambios dinámicos del lenguaje.

[static noexcept] QCoreApplication *QCoreApplication::instance()

Devuelve un puntero a la instancia QCoreApplication (o QGuiApplication/QApplication) de la aplicación.

Si no se ha asignado ninguna instancia, se devuelve nullptr.

[static] bool QCoreApplication::isSetuidAllowed()

Devuelve true si la aplicación puede ejecutarse setuid en plataformas UNIX.

Véase también QCoreApplication::setSetuidAllowed().

[static] QStringList QCoreApplication::libraryPaths()

Devuelve una lista de rutas que la aplicación buscará cuando cargue bibliotecas dinámicamente.

El valor de retorno de esta función puede cambiar cuando se crea un QCoreApplication. No se recomienda llamarla antes de crear un QCoreApplication. El directorio del ejecutable de la aplicación(no el directorio de trabajo) forma parte de la lista si se conoce. Para darlo a conocer hay que construir un QCoreApplication ya que utilizará argv[0] para encontrarlo.

Qt proporciona rutas de biblioteca por defecto, pero también se pueden establecer utilizando un archivo qt.conf. Las rutas especificadas en este archivo anularán los valores por defecto. Tenga en cuenta que si el archivo qt.conf se encuentra en el directorio del ejecutable de la aplicación, es posible que no se encuentre hasta que se cree QCoreApplication. Si no se encuentra al llamar a esta función, se utilizarán las rutas de biblioteca predeterminadas.

La lista incluirá el directorio de instalación de los plugins si existe (el directorio de instalación por defecto de los plugins es INSTALL/plugins, donde INSTALL es el directorio donde se instaló Qt). Siempre se añaden las entradas separadas por dos puntos de la variable de entorno QT_PLUGIN_PATH. El directorio de instalación de plugins (y su existencia) puede cambiar cuando se conozca el directorio del ejecutable de la aplicación.

Ver también setLibraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary, y Cómo crear plugins de Qt.

[virtual] bool QCoreApplication::notify(QObject *receiver, QEvent *event)

Envía event a receiver: receiver->event(event). Devuelve el valor devuelto por el manejador de eventos del receptor. Nótese que esta función es llamada para todos los eventos enviados a cualquier objeto en cualquier hilo.

Para ciertos tipos de eventos (por ejemplo, eventos de ratón y teclas), el evento se propagará al padre del receptor y así sucesivamente hasta el objeto de nivel superior si el receptor no está interesado en el evento (es decir, devuelve false).

Hay cinco formas diferentes de procesar los eventos; reimplementar esta función virtual es sólo una de ellas. Los cinco enfoques se enumeran a continuación:

  1. Reimplementando paintEvent(), mousePressEvent() y así sucesivamente. Esta es la forma más común, más fácil y menos potente.
  2. Reimplementar esta función. Esto es muy potente, proporcionando un control completo; pero sólo una subclase puede estar activa a la vez.
  3. Instalando un filtro de eventos en QCoreApplication::instance(). Un filtro de eventos de este tipo es capaz de procesar todos los eventos de todos los widgets, por lo que es tan potente como reimplementar notify(); además, es posible tener más de un filtro de eventos global de la aplicación. Los filtros de eventos globales ven incluso los eventos de ratón de disabled widgets. Ten en cuenta que los filtros de eventos de aplicación sólo son llamados para objetos que viven en el hilo principal.
  4. Reimplementando QObject::event() (como hace QWidget ). Si haces esto obtienes las pulsaciones de la tecla Tab, y consigues ver los eventos antes que cualquier filtro de eventos específico del widget.
  5. Instalando un filtro de eventos en el objeto. Tal filtro de eventos obtiene todos los eventos, incluyendo los eventos de pulsación de las teclas Tab y Shift+Tab, siempre que no cambien el widget de foco.

Dirección futura: En Qt 7 no se llamará a esta función para objetos que vivan fuera del hilo principal. Las aplicaciones que necesiten esa funcionalidad deberán encontrar otras soluciones para sus necesidades de inspección de eventos mientras tanto. El cambio puede extenderse al hilo principal, causando que esta función quede obsoleta.

Advertencia: Si sobrescribes esta función, debes asegurarte de que todos los hilos que procesan eventos dejan de hacerlo antes de que el objeto de tu aplicación comience a destruirse. Esto incluye hilos iniciados por otras librerías que puedas estar usando, pero no se aplica a los propios hilos de Qt.

Ver también QObject::event() y installNativeEventFilter().

[static] void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)

Añade el evento event, con el objeto receiver como receptor del evento, a una cola de eventos y devuelve inmediatamente.

El evento debe estar asignado en el heap ya que la cola de eventos post tomará posesión del evento y lo borrará una vez que haya sido publicado. No es seguro acceder al evento después de que haya sido enviado.

Cuando el control vuelve al bucle principal de eventos, todos los eventos almacenados en la cola serán enviados utilizando la función notify().

Los eventos se ordenan en orden descendente priority, es decir, los eventos con un priority alto se ponen en cola antes que los eventos con un priority más bajo. priority puede ser cualquier valor entero, es decir, entre INT_MAX e INT_MIN, ambos inclusive; véase Qt::EventPriority para más detalles. Los eventos con igual priority se procesarán en el orden en que se hayan contabilizado.

Nota: QObject::deleteLater() programa el objeto para un borrado diferido, que normalmente es manejado por el bucle de eventos del receptor. Si no se está ejecutando ningún bucle de eventos en el hilo, el borrado se realizará cuando el hilo finalice. Un patrón común y seguro es conectar la señal finished() del hilo a la ranura deleteLater() del objeto:

QObject::connect(thread, &QThread::finished, worker, &QObject::deleteLater);

Nota: Esta función es thread-safe.

Véase también sendEvent(), notify(), sendPostedEvents(), y Qt::EventPriority.

[static] void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents)

Procesa algunos eventos pendientes para la hebra llamante de acuerdo con el flags especificado.

Se desaconseja el uso de esta función. En su lugar, prefiera mover las operaciones largas fuera del hilo GUI a uno auxiliar y evitar completamente el procesamiento de bucles de eventos anidados. Si el procesamiento de eventos es realmente necesario, considere utilizar QEventLoop en su lugar.

En el caso de que esté ejecutando un bucle local que llame a esta función continuamente, sin un bucle de eventos, los eventos de DeferredDelete no serán procesados. Esto puede afectar al comportamiento de los widgets, por ejemplo QToolTip, que dependen de los eventos de DeferredDelete para funcionar correctamente. Una alternativa sería llamar a sendPostedEvents() desde dentro de ese bucle local.

La llamada a esta función procesa eventos sólo para el hilo que llama, y devuelve después de que todos los eventos disponibles hayan sido procesados. Los eventos disponibles son los eventos en cola antes de la llamada a la función. Esto significa que los eventos que se publiquen mientras se ejecuta la función se pondrán en cola hasta una ronda posterior de procesamiento de eventos.

Nota: Esta función es segura para hilos.

Véase también exec(), QTimer, QChronoTimer, QEventLoop::processEvents(), y sendPostedEvents().

[static, since 6.7] void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, QDeadlineTimer deadline)

Procesa los eventos pendientes para la hebra llamante hasta que deadline haya expirado, o hasta que no haya más eventos para procesar, lo que ocurra primero.

Se desaconseja el uso de esta función. En su lugar, prefiera mover las operaciones largas fuera del hilo GUI a uno auxiliar y evitar completamente el procesamiento de bucles de eventos anidados. Si el procesamiento de eventos es realmente necesario, considere utilizar QEventLoop en su lugar.

La llamada a esta función procesa eventos sólo para el subproceso que realiza la llamada.

Nota: A diferencia de la sobrecarga processEvents(), esta función también procesa los eventos que se publican mientras se ejecuta la función.

Nota: Todos los eventos que estaban en cola antes del tiempo de espera serán procesados, independientemente del tiempo que tarde.

Esta es una función sobrecargada.

Nota: Esta función es thread-safe.

Esta función se introdujo en Qt 6.7.

Ver también exec(), QTimer, QChronoTimer, y QEventLoop::processEvents().

[static] void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, int ms)

Procesa los eventos pendientes de la hebra que llama durante ms milisegundos o hasta que no haya más eventos que procesar, lo que sea más corto.

Esto es equivalente a llamar:

QCoreApplication::processEvents(flags, QDeadlineTimer(ms));

Esta es una función sobrecargada.

[static slot] void QCoreApplication::quit()

Pide a la aplicación que salga.

La petición puede ser ignorada si la aplicación impide el abandono, por ejemplo si una de sus ventanas no puede cerrarse. La aplicación puede afectar esto manejando el evento QEvent::Quit a nivel de aplicación, o QEvent::Close eventos para las ventanas individuales.

Si la salida no se interrumpe, la aplicación saldrá con el código de retorno 0 (éxito).

Para salir de la aplicación sin posibilidad de ser interrumpido, llame directamente a exit(). Tenga en cuenta que este método no es thread-safe.

Es una buena práctica conectar siempre las señales a esta ranura usando un QueuedConnection. Si una señal conectada (no en cola) a esta ranura se emite antes de que el control entre en el bucle de eventos principal (como antes de que "int main" llame a exec()), la ranura no tiene efecto y la aplicación nunca sale. El uso de una conexión en cola asegura que la ranura no será invocada hasta después de que el control entre en el bucle de eventos principal.

Ejemplo:

QPushButton *quitButton = new QPushButton("Quit");
QObject::connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection);

Nota sobre la seguridad de los hilos: esta función puede ser invocada desde cualquier hilo para provocar la salida del bucle principal de la aplicación que se esté ejecutando en ese momento. Sin embargo, la seguridad no está garantizada si el objeto QCoreApplication está siendo destruido al mismo tiempo.

Nota: Esta función es thread-safe.

Véase también exit() y aboutToQuit().

[static] void QCoreApplication::removeLibraryPath(const QString &path)

Elimina path de la lista de rutas de la biblioteca. Si path está vacío o no está en la lista de rutas, la lista no se modifica.

Las rutas de biblioteca se restablecen a los valores predeterminados cuando se destruye una instancia de QCoreApplication.

Véase también addLibraryPath(), libraryPaths() y setLibraryPaths().

void QCoreApplication::removeNativeEventFilter(QAbstractNativeEventFilter *filterObject)

Elimina un evento filterObject de este objeto. La petición se ignora si no se ha instalado dicho filtro de eventos.

Todos los filtros de eventos para este objeto se eliminan automáticamente cuando se destruye este objeto.

Siempre es seguro eliminar un filtro de eventos, incluso durante la activación del filtro de eventos (es decir, desde la función nativeEventFilter()).

Véase también installNativeEventFilter().

[static] void QCoreApplication::removePostedEvents(QObject *receiver, int eventType = 0)

Elimina todos los eventos del eventType dado que fueron enviados usando postEvent() para receiver.

Los eventos no se envían, sino que se eliminan de la cola. Nunca debería ser necesario llamar a esta función. Si la llama, tenga en cuenta que la eliminación de eventos puede hacer que receiver rompa una o más invariantes.

Si receiver es nullptr, los eventos de eventType se eliminan para todos los objetos. Si eventType es 0, se eliminan todos los eventos de receiver. Nunca se debe llamar a esta función con eventType de 0.

Nota: Esta función es thread-safe.

[static] bool QCoreApplication::removeTranslator(QTranslator *translationFile)

Elimina el archivo de traducción translationFile de la lista de archivos de traducción utilizados por esta aplicación. (No elimina el archivo de traducción del sistema de archivos).

La función devuelve true en caso de éxito y false en caso de fallo.

Véase también installTranslator(), translate(), y QObject::tr().

[since 6.5] template <typename Functor> void QCoreApplication::requestPermission(const QPermission &permission, Functor &&functor)

Solicita la dirección permission.

Cuando la solicitud esté lista, functor será llamada como functor(const QPermission &permission), con permission describiendo el resultado de la solicitud.

functor puede ser una función miembro independiente o estática:

qApp->requestPermission(QCameraPermission{}, &permissionUpdated);

o una lambda:

qApp->requestPermission(QCameraPermission{}, [](const QPermission &permission) {
});

Si el usuario concede explícitamente a la aplicación la permission solicitada , o se sabe que la permission no requiere autorización del usuario en la plataforma dada, el estado será Qt::PermissionStatus::Granted.

Si el usuario deniega explícitamente a la aplicación el permission solicitado, o se sabe que el permission no es accesible o aplicable a las aplicaciones en la plataforma dada, el estado será Qt::PermissionStatus::Denied.

El resultado de una solicitud nunca será Qt::PermissionStatus::Undetermined.

Nota: Los permisos sólo pueden solicitarse desde el hilo principal.

Esta función se introdujo en Qt 6.5.

Véase también checkPermission() y Permisos de aplicación.

[since 6.5] template <typename Functor> void QCoreApplication::requestPermission(const QPermission &permission, const QObject *context, Functor functor)

Solicita el permission dado , en el contexto de context.

Cuando la solicitud esté lista, functor será llamada como functor(const QPermission &permission), con permission describiendo el resultado de la solicitud.

functor puede ser una función miembro independiente o estática:

qApp->requestPermission(QCameraPermission{}, context, &permissionUpdated);

una lambda

qApp->requestPermission(QCameraPermission{}, context, [](const QPermission &permission) {
});

o un slot en el objeto context:

qApp->requestPermission(QCameraPermission{}, this, &CamerWidget::permissionUpdated);

El functor será llamado en el hilo del objeto context. Si context se destruye antes de que finalice la solicitud, no se llamará a functor.

Si el usuario concede explícitamente a la aplicación la permission solicitada, o se sabe que la permission no requiere autorización del usuario en la plataforma dada, el estado será Qt::PermissionStatus::Granted.

Si el usuario deniega explícitamente a la aplicación el permission solicitado, o se sabe que el permission no es accesible o aplicable a las aplicaciones en la plataforma dada, el estado será Qt::PermissionStatus::Denied.

El resultado de una solicitud nunca será Qt::PermissionStatus::Undetermined.

Nota: Los permisos sólo pueden solicitarse desde el hilo principal.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.5.

Véase también checkPermission() y Application Permissions.

[static] bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event)

Envía el evento event directamente al receptor receiver, utilizando la función notify(). Devuelve el valor devuelto por el manejador del evento.

El evento no se borra cuando se ha enviado el evento. Lo normal es crear el evento en la pila, por ejemplo:

QMouseEvent event(QEvent::MouseButtonPress, localPos, globalPos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(mainWindow, &event);

Véase también postEvent() y notify().

[static] void QCoreApplication::sendPostedEvents(QObject *receiver = nullptr, int event_type = 0)

Despacha inmediatamente todos los eventos que han sido previamente puestos en cola con QCoreApplication::postEvent() y que son para el objeto receiver y tienen el tipo de evento event_type.

Los eventos del sistema de ventanas no son enviados por esta función, sino por processEvents().

Si receiver es nullptr, se envían los eventos de event_type para todos los objetos. Si event_type es 0, todos los eventos se envían para receiver.

Nota: Este método debe ser llamado desde el hilo en el que vive su parámetro QObject, receiver.

Véase también postEvent().

[static] void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on = true)

Establece el atributo attribute si on es verdadero; en caso contrario, borra el atributo.

Nota: Algunos atributos de la aplicación deben establecerse antes de crear una instancia de QCoreApplication. Consulte la documentación de Qt::ApplicationAttribute para obtener más información.

Véase también testAttribute().

[static] void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)

Establece el despachador de eventos para el hilo principal en eventDispatcher. Esto sólo es posible mientras no haya un despachador de eventos instalado todavía. Es decir, antes de que QCoreApplication haya sido instanciado. Este método toma posesión del objeto.

Véase también eventDispatcher().

[static] void QCoreApplication::setLibraryPaths(const QStringList &paths)

Establece la lista de directorios a buscar cuando se cargan plugins con QLibrary a paths. Todas las rutas existentes serán eliminadas y la lista de rutas consistirá en las rutas dadas en paths y la ruta a la aplicación.

Las rutas de la biblioteca se restablecen a las predeterminadas cuando se destruye una instancia de QCoreApplication.

Véase también libraryPaths(), addLibraryPath(), removeLibraryPath(), y QLibrary.

[static] void QCoreApplication::setSetuidAllowed(bool allow)

Permite que la aplicación se ejecute con setuid en plataformas UNIX si allow es verdadero.

Si allow es falso (por defecto) y Qt detecta que la aplicación se está ejecutando con un id de usuario efectivo diferente del id de usuario real, la aplicación será abortada cuando se cree una instancia de QCoreApplication.

Qt no es una solución apropiada para programas setuid debido a su gran superficie de ataque. Sin embargo, algunas aplicaciones pueden necesitar ejecutarse de esta manera por razones históricas. Este indicador evitará que Qt aborte la aplicación cuando se detecte esta situación, y debe establecerse antes de crear una instancia de QCoreApplication.

Nota: Se recomienda encarecidamente no activar esta opción ya que introduce riesgos de seguridad. Si esta aplicación habilita la opción e inicia procesos hijo, debería abandonar los privilegios tan pronto como sea posible llamando a setuid(2) para sí misma, o como muy tarde usando la opción QProcess::UnixProcessParameters::ResetIds.

Véase también isSetuidAllowed().

[static] bool QCoreApplication::startingUp()

Devuelve true si aún no se ha creado un objeto de aplicación; en caso contrario devuelve false.

Véase también closingDown().

[static] bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute)

Devuelve true si el atributo attribute está establecido; en caso contrario devuelve false.

Véase también setAttribute().

[static] QString QCoreApplication::translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1)

Devuelve el texto traducido de sourceText, consultando los archivos de traducción instalados. Los archivos de traducción se buscan desde el archivo instalado más recientemente hasta el primer archivo instalado.

QObject::tr() proporciona esta funcionalidad de forma más cómoda.

context es típicamente un nombre de clase (por ejemplo, "MyDialog") y sourceText es un texto en inglés o un texto identificativo corto.

disambiguation es una cadena identificativa, para cuando el mismo sourceText se utiliza en diferentes funciones dentro del mismo contexto. Por defecto, es nullptr.

Consulte la documentación de QTranslator y QObject::tr() para obtener más información sobre contextos, desambiguaciones y comentarios.

n se utiliza junto con %n para admitir formas plurales. Consulte QObject::tr() para más detalles.

Si ninguno de los archivos de traducción contiene una traducción para sourceText en context, esta función devuelve un QString equivalente a sourceText.

Esta función no es virtual. Puede utilizar técnicas de traducción alternativas subclasificando QTranslator.

Nota: Esta función es thread-safe.

Véase también QObject::tr(), installTranslator(), removeTranslator(), y Internationalization and Translations.

No miembros relacionados

void qAddPostRoutine(QtCleanUpFunction ptr)

Añade una rutina global que será llamada desde el destructor de QCoreApplication. Esta función se utiliza normalmente para añadir rutinas de limpieza para la funcionalidad de todo el programa.

Las rutinas de limpieza son llamadas en el orden inverso al de su adición.

La función especificada por ptr no debe tomar argumentos y no debe devolver nada. Por ejemplo:

static int *global_ptr = nullptr;

static void cleanup_ptr()
{
    delete [] global_ptr;
    global_ptr = nullptr;
}

void init_ptr()
{
    global_ptr = new int[100];      // allocate data
    qAddPostRoutine(cleanup_ptr);   // delete later
}

Tenga en cuenta que para una limpieza a nivel de aplicación o módulo, qAddPostRoutine() no suele ser adecuada. Por ejemplo, si el programa está dividido en módulos cargados dinámicamente, el módulo relevante puede ser descargado mucho antes de que el destructor QCoreApplication sea llamado. En tales casos, si utilizar qAddPostRoutine() sigue siendo deseable, se puede utilizar qRemovePostRoutine() para evitar que una rutina sea llamada por el destructor QCoreApplication. Por ejemplo, si esa rutina fue llamada antes de que el módulo fuera descargado.

Para módulos y librerías, puede ser mejor usar un gestor de inicialización por referencias o el mecanismo de borrado padre-hijo de Qt. He aquí un ejemplo de una clase privada que utiliza el mecanismo padre-hijo para llamar a una función de limpieza en el momento adecuado:

class MyPrivateInitStuff : public QObject
{
public:
    static MyPrivateInitStuff *initStuff(QObject *parent)
    {
        if (!p)
            p = new MyPrivateInitStuff(parent);
        return p;
    }

    ~MyPrivateInitStuff()
    {
        // cleanup goes here
    }

private:
    MyPrivateInitStuff(QObject *parent)
        : QObject(parent)
    {
        // initialization goes here
    }

    static MyPrivateInitStuff *p;
};

Seleccionando el objeto padre correcto, a menudo se puede hacer que limpie los datos del módulo en el momento adecuado.

Nota: Esta función es thread-safe desde Qt 5.10.

Nota: Esta función es thread-safe.

Véase también qRemovePostRoutine().

void qRemovePostRoutine(QtCleanUpFunction ptr)

Elimina la rutina de limpieza especificada por ptr de la lista de rutinas llamadas por el destructor QCoreApplication. La rutina debe haber sido añadida previamente a la lista mediante una llamada a qAddPostRoutine(), de lo contrario esta función no tiene efecto.

Nota: Esta función es thread-safe desde Qt 5.10.

Nota: Esta función es thread-safe.

Véase también qAddPostRoutine().

Documentación de macros

Q_COREAPP_STARTUP_FUNCTION(QtStartUpFunction ptr)

Añade una función global que será llamada desde el constructor QCoreApplication. Esta macro se utiliza normalmente para inicializar bibliotecas para la funcionalidad de todo el programa, sin necesidad de que la aplicación llame a la biblioteca para la inicialización.

La función especificada por ptr no debe tomar argumentos y no debe devolver nada. Por ejemplo:

// Called once QCoreApplication exists
static void preRoutineMyDebugTool()
{
    MyDebugTool* tool = new MyDebugTool(QCoreApplication::instance());
    QCoreApplication::instance()->installEventFilter(tool);
}

Q_COREAPP_STARTUP_FUNCTION(preRoutineMyDebugTool)

Tenga en cuenta que la función de inicio se ejecutará al final del constructor de QCoreApplication, antes de cualquier inicialización de la GUI. Si se requiere código GUI en la función, utilice un temporizador (o una invocación en cola) para realizar la inicialización más tarde, desde el bucle de eventos.

Si se borra QCoreApplication y se crea otro QCoreApplication, la función de inicialización se invocará de nuevo.

Nota: Esta macro no es adecuada para su uso en código de biblioteca que luego se enlaza estáticamente en una aplicación, ya que la función puede no ser llamada en absoluto debido a que es eliminada por el enlazador.

Nota: Esta macro es reentrante.

Q_DECLARE_TR_FUNCTIONS(context)

La macro Q_DECLARE_TR_FUNCTIONS() declara e implementa la función de traducción tr() con esta firma:

static inline QString tr(const char *sourceText,
                         const char *comment = nullptr);

Esta macro es útil si desea utilizar QObject::tr() en clases que no heredan de QObject.

Q_DECLARE_TR_FUNCTIONS() debe aparecer al principio de la definición de la clase (antes del primer public: o protected:). Por ejemplo:

class MyMfcView : public CView
{
    Q_DECLARE_TR_FUNCTIONS(MyMfcView)

public:
    MyMfcView();
    //...
};

El parámetro context es normalmente el nombre de la clase, pero puede ser cualquier texto.

Véase también Q_OBJECT y QObject::tr().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.