【发布时间】:2011-03-17 03:13:00
【问题描述】:
我在 Windows 7 Ultimate 下使用 Qt 4.6.0(32 位)。考虑以下QThread:
界面
class ResultThread : public QThread
{
Q_OBJECT
QString _post_data;
QNetworkAccessManager _net_acc_mgr;
signals:
void onFinished(QNetworkReply* net_reply);
private slots:
void onReplyFinished(QNetworkReply* net_reply);
public:
ResultThread();
void run();
void setPostData(const QString& post_data);
};
实施
ResultThread::ResultThread() : _net_acc_mgr(this)
{
connect(&_net_acc_mgr, SIGNAL(finished(QNetworkReply*)),
this, SLOT(onReplyFinished(QNetworkReply*)));
}
void ResultThread::onReplyFinished(QNetworkReply* net_reply)
{
emit onFinished(net_reply);
}
void ResultThread::setPostData(const QString& post_data)
{
_post_data = post_data;
}
void ResultThread::run()
{
_net_acc_mgr.post(QNetworkRequest(QUrl("http://[omitted]")),
QByteArray(_post_data.toStdString().c_str()));
}
每当在ResultThread::run() 中执行_net_acc_mgr.post() 时,我都会在Qt Creator 中得到以下应用程序输出:
QObject:无法为不同线程中的父级创建子级。
(Parent是QNetworkAccessManager(0x22fe58),parent的线程是QThread(0x9284190),当前线程是ResultThread(0x22fe48)
这是什么意思?如何解决?
【问题讨论】: