メインロジックにQt、ユーザーインターフェイスにWtを使用してアプリケーションを開発しています。
しかし、私は解決できない問題に直面しました。wtwithqtの例に適用しました。
「passGreet」関数を変更して、シグナルを直接ではなく非同期で呼び出すようにしました。
その時点でアプリケーションがクラッシュします。理由がよくわかりません。
編集:実際には、Wtオブジェクトを編集すると実際にクラッシュします"HelloApplication::doGreet(const QString& qname)"
写真: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
事前に助けてくれてありがとう!