添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Public Functions int exec (ProcessEventsFlags flags= AllEvents )  Enters the main event loop and waits until exit() is called. More...
void exit (int returnCode=0)  Tells the event loop to exit with a return code. More...
bool isRunning () const  Returns true if the event loop is running; otherwise returns false. More...
bool processEvents (ProcessEventsFlags flags= AllEvents )  Processes pending events that match flags until there are no more events to process. More...
void processEvents (ProcessEventsFlags flags, int maximumTime)  Process pending events that match flags for a maximum of maxTime milliseconds, or until there are no more events to process, whichever is shorter. More...
QEventLoop ( QObject * parent =0)  Constructs an event loop object with the given parent . More...
void wakeUp ()  Wakes up the event loop. More...
~QEventLoop ()  Destroys the event loop object. More...
- Public Functions inherited from QObject bool blockSignals (bool b)  If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
const QObjectList & children () const  Returns a list of child objects. More...
bool connect (const QObject * sender , const char *signal, const char *member, Qt::ConnectionType type = Qt::AutoConnection ) const bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0) bool disconnect (const QObject *receiver, const char *member=0) void dumpObjectInfo ()  Dumps information about signal connections, etc. More...
void dumpObjectTree ()  Dumps a tree of children to the debug output. More...
QList < QByteArray > dynamicPropertyNames () const  Returns the names of all properties that were dynamically added to the object using setProperty() . More...
virtual bool event ( QEvent *)  This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
virtual bool eventFilter ( QObject *, QEvent *)  Filters events if this object has been installed as an event filter for the watched object. More...
template<typename T > T findChild (const QString &aName= QString ()) const  Returns the child of this object that can be cast into type T and that is called name , or 0 if there is no such object. More...
template<typename T > QList < T > findChildren (const QString &aName= QString ()) const  Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
template<typename T > QList < T > findChildren (const QRegExp &re) const bool inherits (const char *classname) const  Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className ; otherwise returns false. More...
void installEventFilter ( QObject *)  Installs an event filter filterObj on this object. More...
bool isWidgetType () const  Returns true if the object is a widget; otherwise returns false. More...
void killTimer (int id)  Kills the timer with timer identifier, id . More...
virtual const QMetaObject * metaObject () const  Returns a pointer to the meta-object of this object. More...
void moveToThread ( QThread * thread )  Changes the thread affinity for this object and its children. More...
QString objectName () const QObject * parent () const  Returns a pointer to the parent object. More...
QVariant property (const char * name ) const  Returns the value of the object's name property. More...
Q_INVOKABLE QObject ( QObject * parent =0)  Constructs an object with parent object parent . More...
void removeEventFilter ( QObject *)  Removes an event filter object obj from this object. More...
void setObjectName (const QString & name ) void setParent ( QObject *)  Makes the object a child of parent . More...
bool setProperty (const char * name , const QVariant &value)  Sets the value of the object's name property to value . More...
void setUserData ( uint id, QObjectUserData * data ) bool signalsBlocked () const  Returns true if signals are blocked; otherwise returns false. More...
int startTimer (int interval)  Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
QThread * thread () const  Returns the thread in which the object lives. More...
QObjectUserData * userData ( uint id) const virtual ~QObject ()  Destroys the object, deleting all its child objects. More...
Additional Inherited Members - Signals inherited from QObject void destroyed ( QObject *=0)  This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
- Static Public Functions inherited from QObject static bool connect (const QObject * sender , const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType = Qt::AutoConnection )  Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
static bool connect (const QObject * sender , const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type = Qt::AutoConnection ) static bool disconnect (const QObject * sender , const char *signal, const QObject *receiver, const char *member)  Disconnects signal in object sender from method in object receiver . More...
static bool disconnect (const QObject * sender , const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) static uint registerUserData () static QString tr (const char *sourceText, const char *comment=0, int n=-1) static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1) - Static Public Variables inherited from QObject static const QMetaObject staticMetaObject This variable stores the meta-object for the class. More...
- Protected Functions inherited from QObject virtual void childEvent ( QChildEvent *)  This event handler can be reimplemented in a subclass to receive child events. More...
virtual void connectNotify (const char *signal)  This virtual function is called when something has been connected to signal in this object. More...
virtual void customEvent ( QEvent *)  This event handler can be reimplemented in a subclass to receive custom events. More...
virtual void disconnectNotify (const char *signal)  This virtual function is called when something has been disconnected from signal in this object. More...
QObject ( QObjectPrivate &dd, QObject * parent =0) int receivers (const char *signal) const  Returns the number of receivers connected to the signal . More...
QObject * sender () const  Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
int senderSignalIndex () const virtual void timerEvent ( QTimerEvent *)  This event handler can be reimplemented in a subclass to receive timer events for the object. More...
- Protected Variables inherited from QObject QScopedPointer < QObjectData > d_ptr - Static Protected Variables inherited from QObject static const QMetaObject staticQtMetaObject - Related Functions inherited from QObject T qFindChildqFindChildren (const QObject *obj, const QString & name )() QList < T > qFindChildrenqFindChildren (const QObject *obj, const QString & name )() QList < T > qFindChildrenqFindChildren (const QObject *obj, const QRegExp &regExp)() T * qobject_cast ( QObject *object) QObjectList void * qt_find_obj_child ( QObject * parent , const char * type , const QString & name )  Returns a pointer to the object named name that inherits type and with a given parent . More...

Detailed Description

The QEventLoop class provides a means of entering and leaving an event loop.

At any time, you can create a QEventLoop object and call exec() on it to start a local event loop. From within the event loop, calling exit() will force exec() to return.

See also
QAbstractEventDispatcher

Definition at line 55 of file qeventloop.h .

Enumerations

ProcessEventsFlag

This enum controls the types of events processed by the processEvents() functions.

  • AllEvents All events. Note that DeferredDelete events are processed specially. See QObject::deleteLater() for more details.
  • ExcludeUserInputEvents Do not process user input events, such as ButtonPress and KeyPress. Note that the events are not discarded; they will be delivered the next time processEvents() is called without the ExcludeUserInputEvents flag.
  • ExcludeSocketNotifiers Do not process socket notifier events. Note that the events are not discarded; they will be delivered the next time processEvents() is called without the ExcludeSocketNotifiers flag.
  • WaitForMoreEvents Wait for events if no pending events are available.
  • X11ExcludeTimers
  • ExcludeUserInput
  • WaitForMore
  • EventLoopExec
  • DialogExec
  • DeferredDeletion deprecated - do not use.
  • See also
    processEvents()
    Enumerator AllEvents ExcludeUserInputEvents ExcludeSocketNotifiers WaitForMoreEvents X11ExcludeTimers DeferredDeletion EventLoopExec DialogExec

    Definition at line 64 of file qeventloop.h .

    64 {
    65 AllEvents = 0x00,
    69 #ifdef QT3_SUPPORT
    70 ExcludeUserInput = ExcludeUserInputEvents ,
    71 WaitForMore = WaitForMoreEvents ,
    72 #endif
    74 #ifdef QT_DEPRECATED
    76 #endif
    77 , EventLoopExec = 0x20
    78 , DialogExec = 0x40
    79 };
    QEventLoop::ExcludeSocketNotifiers
    Definition: qeventloop.h:67

    Constructors and Destructors

    QEventLoop()

    Constructs an event loop object with the given parent .

    Definition at line 117 of file qeventloop.cpp .

    118 : QObject (* new QEventLoopPrivate , parent)
    119 {
    122 qWarning ( "QEventLoop: Cannot be used without QApplication" );
    123 } else if (! d ->threadData->eventDispatcher) {
    125 }
    126 }
    double d
    Definition: qnumeric_p.h:62
    #define Q_D(Class)
    Definition: qglobal.h:2482
    The QEventLoop class provides a means of entering and leaving an event loop.
    Definition: qeventloop.h:55
    Q_CORE_EXPORT void qWarning(const char *,...)
    static QCoreApplication * instance()
    Returns a pointer to the application&#39;s QCoreApplication (or QApplication) instance.
    Q_INVOKABLE QObject(QObject *parent=0)
    Constructs an object with parent object parent.
    Definition: qobject.cpp:753
    static void createEventDispatcher(QThreadData *data)

    Enters the main event loop and waits until exit() is called.

    Returns the value that was passed to exit() .

    If flags are specified, only events of the types allowed by the flags will be processed.

    It is necessary to call this function to start event handling. The main event loop receives events from the window system and dispatches these to the application widgets.

    Generally speaking, no user interaction can take place before calling exec() . As a special case, modal widgets like QMessageBox can be used before calling exec() , because modal widgets use their own local event loop.

    To make your application perform idle processing (i.e. executing a special function whenever there are no pending events), use a QTimer with 0 timeout. More sophisticated idle processing schemes can be achieved using processEvents() .

    See also
    QApplication::quit() , exit() , processEvents()

    Definition at line 181 of file qeventloop.cpp .

    Referenced by QTestEventLoop::enterLoop() , QScriptEngineDebuggerBackend::event() , QThread::exec() , QCoreApplication::exec() , QCoreApplication::hasPendingEvents() , QMenuPrivate::hideMenu() , QComboBox::hidePopup() , QMenuPrivate::hideUpToMenuBar() , QDBusConnectionPrivate::sendWithReply() , QHttpThreadDelegate::startRequestSynchronously() , and QNetworkSession::waitForOpened() .

    182 {
    184 //we need to protect from race condition with QThread::exit
    185 QMutexLocker locker(&static_cast<QThreadPrivate *>( QObjectPrivate::get ( d ->threadData->thread))->mutex);
    186 if ( d ->threadData->quitNow)
    187 return -1;
    188
    189 if ( d ->inExec) {
    190 qWarning ( "QEventLoop::exec: instance %p has already called exec()" , this );
    191 return -1;
    192 }
    193 d ->inExec = true ;
    194 d ->exit = false ;
    195 ++ d ->threadData->loopLevel;
    196 d ->threadData->eventLoops.push( this );
    197 locker.unlock();
    198
    199 // remove posted quit events when entering a new event loop
    201 if (app && app-> thread () == thread ())
    203
    204 #if defined(QT_NO_EXCEPTIONS)
    205 while (! d ->exit)
    207 #else
    208 try {
    209 while (! d ->exit)
    211 } catch (...) {
    212 qWarning ( "Qt has caught an exception thrown from an event handler. Throwing\n"
    213 "exceptions from an event handler is not supported in Qt. You must\n"
    214 "reimplement QApplication::notify() and catch all exceptions there.\n" );
    215
    216 // copied from below
    217 locker.relock();
    218 QEventLoop *eventLoop = d ->threadData->eventLoops.pop();
    219 Q_ASSERT_X (eventLoop == this , "QEventLoop::exec()" , "internal error" );
    220 Q_UNUSED (eventLoop); // --release warning
    221 d ->inExec = false ;
    222 -- d ->threadData->loopLevel;
    223
    224 throw ;
    225 }
    226 #endif
    227
    228 // copied above
    229 locker.relock();
    230 QEventLoop *eventLoop = d ->threadData->eventLoops.pop();
    231 Q_ASSERT_X (eventLoop == this , "QEventLoop::exec()" , "internal error" );
    232 Q_UNUSED (eventLoop); // --release warning
    233 d ->inExec = false ;
    234 -- d ->threadData->loopLevel;
    235
    236 return d ->returnCode;
    237 }
    double d
    Definition: qnumeric_p.h:62
    #define Q_D(Class)
    Definition: qglobal.h:2482
    static QObjectPrivate * get(QObject *o)
    Definition: qobject_p.h:177
    The QEventLoop class provides a means of entering and leaving an event loop.
    Definition: qeventloop.h:55
    Q_CORE_EXPORT void qWarning(const char *,...)
    The QCoreApplication class provides an event loop for console Qt applications.
    #define Q_ASSERT_X(cond, where, what)
    Definition: qglobal.h:1837
    The QMutexLocker class is a convenience class that simplifies locking and unlocking mutexes...
    Definition: qmutex.h:101
    static QCoreApplication * instance()
    Returns a pointer to the application&#39;s QCoreApplication (or QApplication) instance.
    removePostedEvents
    Removes all events of the given eventType that were posted using postEvent() for receiver.
    QThread * thread() const
    Returns the thread in which the object lives.
    Definition: qobject.cpp:1419
    #define Q_UNUSED(x)
    Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
    Definition: qglobal.h:1729
    bool processEvents(ProcessEventsFlags flags=AllEvents)
    Processes pending events that match flags until there are no more events to process.

    Tells the event loop to exit with a return code.

    After this function has been called, the event loop returns from the call to exec() . The exec() function returns returnCode .

    By convention, a returnCode of 0 means success, and any non-zero value indicates an error.

    Note that unlike the C library function of the same name, this function does return to the caller – it is event processing that stops.

    See also
    QCoreApplication::quit() , quit() , exec()

    Definition at line 288 of file qeventloop.cpp .

    Referenced by QPatternist::NetworkLoop::error() , QThread::exit() , QCoreApplication::exit() , QTestEventLoop::exitLoop() , QPatternist::NetworkLoop::finished() , QCoreApplication::hasPendingEvents() , and quit() .

    289 {
    291 if (! d ->threadData->eventDispatcher)
    292 return ;
    293
    294 d ->returnCode = returnCode;
    295 d ->exit = true ;
    296 d ->threadData->eventDispatcher->interrupt();
    297 }
    double d
    Definition: qnumeric_p.h:62
    #define Q_D(Class)
    Definition: qglobal.h:2482
    The QEventLoop class provides a means of entering and leaving an event loop.
    Definition: qeventloop.h:55

    Returns true if the event loop is running; otherwise returns false.

    The event loop is considered running from the time when exec() is called until exit() is called.

    See also
    exec() exit()

    Definition at line 306 of file qeventloop.cpp .

    Referenced by QScriptEngineDebuggerBackend::event() , QScriptEngineDebuggerBackend::resume() , and QScriptEngineDebuggerBackendPrivate::~QScriptEngineDebuggerBackendPrivate() .

    307 {
    308 Q_D ( const QEventLoop );
    309 return ! d ->exit;
    310 }
    double d
    Definition: qnumeric_p.h:62
    #define Q_D(Class)
    Definition: qglobal.h:2482
    The QEventLoop class provides a means of entering and leaving an event loop.
    Definition: qeventloop.h:55

    Processes pending events that match flags until there are no more events to process.

    Returns true if pending events were handled; otherwise returns false.

    This function is especially useful if you have a long running operation and want to show its progress without allowing user input; i.e. by using the ExcludeUserInputEvents flag.

    This function is simply a wrapper for QAbstractEventDispatcher::processEvents() . See the documentation for that function for details.

    Definition at line 148 of file qeventloop.cpp .

    Referenced by exec() , and processEvents() .

    149 {
    151 if (! d ->threadData->eventDispatcher)
    152 return false ;
    153 if (flags & DeferredDeletion )
    155 return d ->threadData->eventDispatcher->processEvents(flags);
    156 }
    double d
    Definition: qnumeric_p.h:62
    #define Q_D(Class)
    Definition: qglobal.h:2482
    The QEventLoop class provides a means of entering and leaving an event loop.
    Definition: qeventloop.h:55
    static void sendPostedEvents()

    Process pending events that match flags for a maximum of maxTime milliseconds, or until there are no more events to process, whichever is shorter.

    This function is especially useful if you have a long running operation and want to show its progress without allowing user input, i.e. by using the ExcludeUserInputEvents flag.

    Notes: