Я использую Qt 4.7 и PyQt 4.7 для сборки многопоточной программы с графическим интерфейсом.Я тщательно управлял объектами PyQt, чтобы они оставались в одном потоке пользовательского интерфейса, чтобы избежать проблем с синхронизацией, и в целом проблем нет.
Но иногда, в данный момент сборщик мусора python активируется из другого потока,деструктор объекта Qt вызывается прямо здесь, и следующее утверждение не выполняется изнутри Qt.
Я могу определить QT_NO_DEBUG даже для отладочной версии, и это должно быть хорошо, потому что собираемые объекты едва ли вызывают проблему синхронизации.Но, тем не менее, я не думаю, что это хорошая идея, чтобы отключить другие сообщения отладки.Как я могу предотвратить это?
#if !defined (QT_NO_DEBUG) || defined (QT_MAC_FRAMEWORK_BUILD)
void QCoreApplicationPrivate::checkReceiverThread(QObject *receiver)
{
QThread *currentThread = QThread::currentThread();
QThread *thr = receiver->thread();
Q_ASSERT_X(currentThread == thr || !thr,
"QCoreApplication::sendEvent",
QString::fromLatin1("Cannot send events to objects owned by a different thread. "
"Current thread %1. Receiver '%2' (of type '%3') was created in thread %4")
.arg(QString::number((quintptr) currentThread, 16))
.arg(receiver->objectName())
.arg(QLatin1String(receiver->metaObject()->className()))
.arg(QString::number((quintptr) thr, 16))
.toLocal8Bit().data());
Q_UNUSED(currentThread);
Q_UNUSED(thr);
}
#elif defined(Q_OS_SYMBIAN) && defined (QT_NO_DEBUG)