启动我的QtJambi程序时,我在控制台(stderr)上收到了很多此类消息:
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[1]="actionNew()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[2]="showAnalysisForm()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[3]="actionOpen()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[4]="actionSave()"
QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(0x7f75805bfe90) initialize q->d=0x7f75806786e0 m_original_signatures[5]="actionSaveAs()"
函数名称(actionNew
等)是我程序中的Qt插槽。但是,为什么我会看到这些消息,以及如何摆脱它们(以便它们不会隐藏重要消息)?
我已经安装了QMessageHandler
(我认为相当于qInstallMsgHandler
),它现在给了我一些警告消息,但上面的消息不会通过我的消息处理程序。
答案 0 :(得分:2)
这似乎是调试的残留代码。在... / qt-jambi-qtjambi-community / src / cpp / qtjambi / qtdynamicmetaobject.cpp中你会发现:
for (int i=0; i<m_method_count + m_signal_count; ++i) {
jobject lr_string = env->GetObjectArrayElement(original_signatures, i);
m_original_signatures[i] = qtjambi_to_qstring(env, (jstring) lr_string);
fprintf(stderr, "QtDynamicMetaObjectPrivate::QtDynamicMetaObjectPrivate(%p) initialize q->d=%p m_original_signatures[%d]=\"%s\"\n", this, &q->d, i, qPrintable(m_original_signatures[i]));
#ifdef QTJAMBI_DEBUG_LOCALREF_CLEANUP
env->DeleteLocalRef(lr_string);
#endif
}
也许新的下载可以解决问题。或者,您可以尝试删除fprintf() 你自己并重建。