Qt 4.8
Public Functions | Protected Functions | List of all members
QEventDispatcherBlackberry Class Reference

#include <qeventdispatcher_blackberry_p.h>

Inheritance diagram for QEventDispatcherBlackberry:
QEventDispatcherUNIX QAbstractEventDispatcher QObject QEventDispatcherBlackberryQPA

Public Functions

 QEventDispatcherBlackberry (QObject *parent=0)
 
void registerSocketNotifier (QSocketNotifier *notifier)
 Registers notifier with the event loop. More...
 
void unregisterSocketNotifier (QSocketNotifier *notifier)
 Unregisters notifier from the event dispatcher. More...
 
void wakeUp ()
 Wakes up the event loop. More...
 
 ~QEventDispatcherBlackberry ()
 
- Public Functions inherited from QEventDispatcherUNIX
void flush ()
 Flushes the event queue. More...
 
bool hasPendingEvents ()
 Returns true if there is an event waiting; otherwise returns false. More...
 
void interrupt ()
 Interrupts event dispatching; i. More...
 
bool processEvents (QEventLoop::ProcessEventsFlags flags)
 Processes pending events that match flags until there are no more events to process. More...
 
 QEventDispatcherUNIX (QObject *parent=0)
 
QList< TimerInforegisteredTimers (QObject *object) const
 Returns a list of registered timers for object. More...
 
void registerSocketNotifier (QSocketNotifier *notifier)
 Registers notifier with the event loop. More...
 
void registerTimer (int timerId, int interval, QObject *object)
 
void unregisterSocketNotifier (QSocketNotifier *notifier)
 Unregisters notifier from the event dispatcher. More...
 
bool unregisterTimer (int timerId)
 
bool unregisterTimers (QObject *object)
 
void wakeUp ()
 Wakes up the event loop. More...
 
 ~QEventDispatcherUNIX ()
 
- Public Functions inherited from QAbstractEventDispatcher
virtual void closingDown ()
 
bool filterEvent (void *message)
 Sends message through the event filter that was set by setEventFilter(). More...
 
 QAbstractEventDispatcher (QObject *parent=0)
 Constructs a new event dispatcher with the given parent. More...
 
int registerTimer (int interval, QObject *object)
 Registers a timer with the specified interval for the given object. More...
 
EventFilter setEventFilter (EventFilter filter)
 Replaces the event filter function for this QAbstractEventDispatcher with filter and returns the replaced event filter function. More...
 
virtual void startingUp ()
 
 ~QAbstractEventDispatcher ()
 Destroys the event dispatcher. 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 QObjectListchildren () 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< QByteArraydynamicPropertyNames () 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 >
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 QMetaObjectmetaObject () 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
 
QObjectparent () 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...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Functions

int ioEvents (int fd)
 
 QEventDispatcherBlackberry (QEventDispatcherBlackberryPrivate &dd, QObject *parent=0)
 
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, timeval *timeout)
 
- Protected Functions inherited from QEventDispatcherUNIX
int activateSocketNotifiers ()
 
int activateTimers ()
 
 QEventDispatcherUNIX (QEventDispatcherUNIXPrivate &dd, QObject *parent=0)
 
void setSocketNotifierPending (QSocketNotifier *notifier)
 
- Protected Functions inherited from QAbstractEventDispatcher
 QAbstractEventDispatcher (QAbstractEventDispatcherPrivate &, QObject *parent)
 
- 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...
 
QObjectsender () 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...
 

Additional Inherited Members

- Public Types inherited from QAbstractEventDispatcher
typedef bool(* EventFilter) (void *message)
 Typedef for a function with the signature. More...
 
typedef QPair< int, int > TimerInfo
 Typedef for QPair<int, int>. More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QAbstractEventDispatcher
void aboutToBlock ()
 This signal is emitted before the event loop calls a function that could block. More...
 
void awake ()
 This signal is emitted after the event loop returns from a function that could block. More...
 
- 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 QAbstractEventDispatcher
static QAbstractEventDispatcherinstance (QThread *thread=0)
 Returns a pointer to the event dispatcher object for the specified thread. 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 Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

Definition at line 62 of file qeventdispatcher_blackberry_p.h.

Constructors and Destructors

◆ QEventDispatcherBlackberry() [1/2]

QEventDispatcherBlackberry::QEventDispatcherBlackberry ( QObject parent = 0)
explicit

◆ ~QEventDispatcherBlackberry()

QEventDispatcherBlackberry::~QEventDispatcherBlackberry ( )

Definition at line 219 of file qeventdispatcher_blackberry.cpp.

220 {
221 }

◆ QEventDispatcherBlackberry() [2/2]

QEventDispatcherBlackberry::QEventDispatcherBlackberry ( QEventDispatcherBlackberryPrivate dd,
QObject parent = 0 
)
protected

Definition at line 214 of file qeventdispatcher_blackberry.cpp.

215  : QEventDispatcherUNIX(dd, parent)
216 {
217 }
QEventDispatcherUNIX(QObject *parent=0)

Functions

◆ ioEvents()

int QEventDispatcherBlackberry::ioEvents ( int  fd)
protected

Definition at line 489 of file qeventdispatcher_blackberry.cpp.

Referenced by registerSocketNotifier(), and unregisterSocketNotifier().

490 {
491  int io_events = 0;
492 
494 
495  if (FD_ISSET(fd, &d->sn_vec[0].enabled_fds))
496  io_events |= BPS_IO_INPUT;
497 
498  if (FD_ISSET(fd, &d->sn_vec[1].enabled_fds))
499  io_events |= BPS_IO_OUTPUT;
500 
501  if (FD_ISSET(fd, &d->sn_vec[2].enabled_fds))
502  io_events |= BPS_IO_EXCEPT;
503 
504  return io_events;
505 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482

◆ registerSocketNotifier()

void QEventDispatcherBlackberry::registerSocketNotifier ( QSocketNotifier notifier)
virtual

Registers notifier with the event loop.

Subclasses must implement this method to tie a socket notifier into another event loop.

Implements QAbstractEventDispatcher.

Definition at line 223 of file qeventdispatcher_blackberry.cpp.

224 {
225  Q_ASSERT(notifier);
227 
228  int sockfd = notifier->socket();
229  int type = notifier->type();
230 
231  qEventDispatcherDebug << Q_FUNC_INFO << "fd =" << sockfd;
232 
233  if (Q_UNLIKELY(sockfd >= FD_SETSIZE)) {
234  qWarning() << "QEventDispatcherBlackberry: cannot register QSocketNotifier (fd too high)"
235  << sockfd;
236  return;
237  }
238 
239  // Register the fd with bps
240  BpsChannelScopeSwitcher channelSwitcher(d->bps_channel);
241  int io_events = ioEvents(sockfd);
242  if (io_events)
243  bps_remove_fd(sockfd);
244 
245  switch (type) {
247  qEventDispatcherDebug << "Registering" << sockfd << "for Reads";
248  io_events |= BPS_IO_INPUT;
249  break;
251  qEventDispatcherDebug << "Registering" << sockfd << "for Writes";
252  io_events |= BPS_IO_OUTPUT;
253  break;
255  default:
256  qEventDispatcherDebug << "Registering" << sockfd << "for Exceptions";
257  io_events |= BPS_IO_EXCEPT;
258  break;
259  }
260 
261  const int result = bps_add_fd(sockfd, io_events, &bpsIOHandler, d->ioData.data());
262  if (Q_UNLIKELY(result != BPS_SUCCESS))
263  qWarning() << "QEventDispatcherBlackberry: bps_add_fd failed";
264 
265  // Call the base Unix implementation. Needed to allow select() to be called correctly
267 }
double d
Definition: qnumeric_p.h:62
int type
Definition: qmetatype.cpp:239
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
#define Q_D(Class)
Definition: qglobal.h:2482
Type type() const
Returns the socket event type specified to the constructor.
void registerSocketNotifier(QSocketNotifier *notifier)
Registers notifier with the event loop.
Q_CORE_EXPORT void qWarning(const char *,...)
#define qEventDispatcherDebug
#define Q_UNLIKELY(x)
Hints to the compiler that the enclosed condition, expr, is likely to evaluate to false...
Definition: qglobal.h:823
static int bpsIOHandler(int fd, int io_events, void *data)
int socket() const
Returns the socket identifier specified to the constructor.
#define Q_FUNC_INFO
Definition: qglobal.h:1871

◆ select()

int QEventDispatcherBlackberry::select ( int  nfds,
fd_set *  readfds,
fd_set *  writefds,
fd_set *  exceptfds,
timeval *  timeout 
)
protectedvirtual

Reimplemented from QEventDispatcherUNIX.

Definition at line 314 of file qeventdispatcher_blackberry.cpp.

316 {
317  Q_UNUSED(nfds);
319  const BBScopedLoopLevelCounter bbLoopCounter(d);
320 
321  BpsChannelScopeSwitcher channelSwitcher(d->bps_channel);
322 
323  // prepare file sets for bps callback
324  d->ioData->count = 0;
325  d->ioData->readfds = readfds;
326  d->ioData->writefds = writefds;
327  d->ioData->exceptfds = exceptfds;
328 
329  // reset all file sets
330  if (readfds)
331  FD_ZERO(readfds);
332 
333  if (writefds)
334  FD_ZERO(writefds);
335 
336  if (exceptfds)
337  FD_ZERO(exceptfds);
338 
339  bps_event_t *event = 0;
340  unsigned int eventCount = 0;
341 
342  // If an event handler called through filterEvent() starts a nested event loop by creating a
343  // new QEventLoop, we will recursively enter this function again. However, each time
344  // bps_get_event() is called, it destroys the last event it handed out before returning the
345  // next event. We don't want it to destroy the event that triggered the nested event loop,
346  // since there may still be more handlers that need to get that event, once the nested event
347  // loop is done and control returns to the outer event loop.
348  //
349  // So we move an event to a holding channel, which takes ownership of the event. Putting
350  // the event on our own channel allows us to manage when it is destroyed, keeping it alive
351  // until we know we are done with it. Each recursive call of this function needs to have
352  // it's own holding channel, since a channel is a queue, not a stack.
353  //
354  // However, a recursive call into this function happens very rarely compared to the many
355  // times this function is called. We don't want to create a holding channel for each time
356  // this function is called, only when it is called recursively. Thus we have the instance
357  // variable d->holding_channel to use in the common case. We keep track of recursive calls
358  // with d->loop_level. If we are in a recursive call, then we create a new holding channel
359  // for this run.
360  int holding_channel = d->holding_channel;
361  if ((d->loop_level > 1) &&
362  Q_UNLIKELY(bps_channel_create(&holding_channel, 0) != BPS_SUCCESS)) {
363  qWarning("QEventDispatcherBlackberry: bps_channel_create failed");
364  holding_channel = -1;
365  }
366 
367  // Convert timeout to milliseconds
368  int timeoutTotal = -1;
369  if (timeout)
370  timeoutTotal = timevalToMillisecs(*timeout);
371  int timeoutLeft = timeoutTotal;
372  timeval startTime = qt_gettime();
373 
374  // This loop exists such that we can drain the bps event queue of all native events
375  // more efficiently than if we were to return control to Qt after each event. This
376  // is important for handling touch events which can come in rapidly.
377  forever {
378  // Only emit the awake() and aboutToBlock() signals in the second iteration. For the
379  // first iteration, the UNIX event dispatcher will have taken care of that already.
380  // Also native events are actually processed one loop iteration after they were
381  // retrieved with bps_get_event().
382 
383  // Filtering the native event should happen between the awake() and aboutToBlock()
384  // signal emissions. The calls awake() - filterNativeEvent() - aboutToBlock() -
385  // bps_get_event() need not to be interrupted by a break or return statement.
386  if (eventCount > 0) {
387  if (event) {
388  emit awake();
389  filterEvent(static_cast<void*>(event));
390  emit aboutToBlock();
391 
392  if (Q_LIKELY(holding_channel != -1)) {
393  // We are now done with this BPS event. Destroy it.
394  destroyHeldBpsEvent(holding_channel);
395  }
396  }
397 
398  // Update the timeout
399  // Clock source is monotonic, so we can recalculate how much timeout is left
400  if (timeoutTotal != -1) {
401  timeval t2 = qt_gettime();
402  timeoutLeft = timeoutTotal
403  - (timevalToMillisecs(t2) - timevalToMillisecs(startTime));
404  if (timeoutLeft < 0)
405  timeoutLeft = 0;
406  }
407 
408  timeval tnext;
409  if (d->timerList.timerWait(tnext)) {
410  int timeoutNext = timevalToMillisecs(tnext);
411  if (timeoutNext < timeoutLeft || timeoutTotal == -1) {
412  timeoutTotal = timeoutLeft = timeoutNext;
413  startTime = qt_gettime();
414  }
415  }
416  }
417 
418  event = 0;
419  { // We need to increase loop level in this scope,
420  // because bps_get_event can also invoke callbacks
421  QScopedLoopLevelCounter loopLevelCounter(d->threadData);
422 
423  // Wait for event or file to be ready
424  const int result = bps_get_event(&event, timeoutLeft);
425  if (Q_UNLIKELY(result != BPS_SUCCESS))
426  qWarning("QEventDispatcherBlackberry: bps_get_event failed");
427  }
428 
429  if (!event) // In case of !event, we break out of the loop to let Qt process the timers
430  break; // (since timeout has expired) and socket notifiers that are now ready.
431 
432  if (bps_event_get_domain(event) == bpsUnblockDomain) {
433  timeoutTotal = 0; // in order to immediately drain the event queue of native events
434  event = 0; // (especially touch move events) we don't break out here
435  } else {
436  // Move the event to our holding channel so we can manage when it is destroyed.
437  if (Q_LIKELY(holding_channel != 1) &&
438  Q_UNLIKELY(bps_channel_push_event(holding_channel, event) != BPS_SUCCESS)) {
439  qWarning("QEventDispatcherBlackberry: bps_channel_push_event failed");
440  }
441  }
442 
443  ++eventCount;
444 
445  // Make sure we are not trapped in this loop due to continuous native events
446  // also we cannot recalculate the timeout without a monotonic clock as the time may have changed
447  const unsigned int maximumEventCount = 12;
448  if (Q_UNLIKELY((eventCount > maximumEventCount && timeoutLeft == 0)
450  if (event) {
451  filterEvent(static_cast<void*>(event));
452 
453  if (Q_LIKELY(holding_channel != -1)) {
454  // We are now done with this BPS event. Destroy it.
455  destroyHeldBpsEvent(holding_channel);
456  }
457  }
458  break;
459  }
460  }
461 
462  // If this was a recursive call into this function, a new holding channel was created for
463  // this run, so destroy it now.
464  if ((holding_channel != d->holding_channel) &&
465  Q_LIKELY(holding_channel != -1) &&
466  Q_UNLIKELY(bps_channel_destroy(holding_channel) != BPS_SUCCESS)) {
467  qWarning("QEventDispatcherBlackberry: bps_channel_destroy failed");
468  }
469 
470  // the number of bits set in the file sets
471  return d->ioData->count;
472 }
double d
Definition: qnumeric_p.h:62
bool filterEvent(void *message)
Sends message through the event filter that was set by setEventFilter().
virtual bool event(QEvent *)
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition: qobject.cpp:1200
#define Q_D(Class)
Definition: qglobal.h:2482
static bool isMonotonic()
Returns true if this is a monotonic clock, false otherwise.
void awake()
This signal is emitted after the event loop returns from a function that could block.
static int bpsUnblockDomain
#define emit
Definition: qobjectdefs.h:76
static int timevalToMillisecs(const timeval &tv)
Q_CORE_EXPORT void qWarning(const char *,...)
static void destroyHeldBpsEvent(int holding_channel)
void aboutToBlock()
This signal is emitted before the event loop calls a function that could block.
#define Q_UNLIKELY(x)
Hints to the compiler that the enclosed condition, expr, is likely to evaluate to false...
Definition: qglobal.h:823
#define Q_LIKELY(x)
Hints to the compiler that the enclosed condition, expr, is likely to evaluate to true...
Definition: qglobal.h:820
timeval qt_gettime()
#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
#define forever
This macro is provided for convenience for writing infinite loops.
Definition: qglobal.h:2452

◆ unregisterSocketNotifier()

void QEventDispatcherBlackberry::unregisterSocketNotifier ( QSocketNotifier notifier)
virtual

Unregisters notifier from the event dispatcher.

Subclasses must reimplement this method to tie a socket notifier into another event loop. Reimplementations must call the base implementation.

Implements QAbstractEventDispatcher.

Definition at line 269 of file qeventdispatcher_blackberry.cpp.

270 {
272 
273  int sockfd = notifier->socket();
274 
275  qEventDispatcherDebug << Q_FUNC_INFO << "fd =" << sockfd;
276 
277  if (Q_UNLIKELY(sockfd >= FD_SETSIZE)) {
278  qWarning() << "QEventDispatcherBlackberry: cannot unregister QSocketNotifier" << sockfd;
279  return;
280  }
281 
282  // Allow the base Unix implementation to unregister the fd too (before call to ioEvents()!)
284 
285  // Unregister the fd with bps
286  BpsChannelScopeSwitcher channelSwitcher(d->bps_channel);
287  int result = bps_remove_fd(sockfd);
288  if (Q_UNLIKELY(result != BPS_SUCCESS))
289  qWarning() << "QEventDispatcherBlackberry: bps_remove_fd failed" << sockfd;
290 
291  const int io_events = ioEvents(sockfd);
292  // if other socket notifier is watching sockfd, readd it
293  if (io_events) {
294  result = bps_add_fd(sockfd, io_events, &bpsIOHandler, d->ioData.data());
295  if (Q_UNLIKELY(result != BPS_SUCCESS))
296  qWarning("QEventDispatcherBlackberry: bps_add_fd error");
297  }
298 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qWarning(const char *,...)
#define qEventDispatcherDebug
#define Q_UNLIKELY(x)
Hints to the compiler that the enclosed condition, expr, is likely to evaluate to false...
Definition: qglobal.h:823
static int bpsIOHandler(int fd, int io_events, void *data)
void unregisterSocketNotifier(QSocketNotifier *notifier)
Unregisters notifier from the event dispatcher.
int socket() const
Returns the socket identifier specified to the constructor.
#define Q_FUNC_INFO
Definition: qglobal.h:1871

◆ wakeUp()

void QEventDispatcherBlackberry::wakeUp ( )
virtual

Wakes up the event loop.

Note
This class or function is threadsafe.
See also
awake()

Implements QAbstractEventDispatcher.

Definition at line 474 of file qeventdispatcher_blackberry.cpp.

475 {
477  if (d->wakeUps.testAndSetAcquire(0, 1)) {
478  bps_event_t *event;
479  if (Q_LIKELY(bps_event_create(&event, bpsUnblockDomain, 0, 0, 0) == BPS_SUCCESS)) {
480  if (Q_LIKELY(bps_channel_push_event(d->bps_channel, event) == BPS_SUCCESS))
481  return;
482  else
483  bps_event_destroy(event);
484  }
485  qWarning("QEventDispatcherBlackberry: wakeUp failed");
486  }
487 }
double d
Definition: qnumeric_p.h:62
virtual bool event(QEvent *)
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition: qobject.cpp:1200
#define Q_D(Class)
Definition: qglobal.h:2482
static int bpsUnblockDomain
Q_CORE_EXPORT void qWarning(const char *,...)
#define Q_LIKELY(x)
Hints to the compiler that the enclosed condition, expr, is likely to evaluate to true...
Definition: qglobal.h:820

The documentation for this class was generated from the following files: