【发布时间】:2013-03-26 19:33:28
【问题描述】:
我正在开发一个应用程序,使用 Qt 作为主逻辑,使用 Wt 作为用户界面。
但是我遇到了一个我无法解决的问题。我已将其应用于 wtwithqt 示例。
我只是将“passGreet”函数改为异步调用信号而不是直接调用。
此时应用程序崩溃。我真的不明白为什么。
EDIT:实际上当它在"HelloApplication::doGreet(const QString& qname)"编辑Wt对象时确实崩溃了
图片:https://dl.dropbox.com/u/90945130/crash.png
可能是从 Qt 事件循环开始的动作起源?
这是代码。
#include "HelloApplication.h"
#include "QtObject.h"
#include <QDebug>
#include <QThread>
QtObject::QtObject(HelloApplication *wt, QObject *parent)
: QObject(parent),
wt_(wt)
{}
void QtObject::passGreet(const QString& name)
{
//Q_EMIT greet(name);
QMetaObject::invokeMethod(this, "greet", Qt::QueuedConnection, Q_ARG(QString, name));
}
void QtObject::doGreet(const QString& name)
{
wt_->doGreet(name);
}
其余未更改的代码在这里:http://pastebin.com/fih6P2eH
提前感谢您的帮助!
【问题讨论】:
-
了解您遇到的崩溃类型会很有帮助,可能还需要回溯。
-
对。给你:dl.dropbox.com/u/90945130/crash.png,我希望这会有所帮助。