2

QStringqml にエクスポートされるオブジェクトがあります。C++値を更新し、プロパティの変更されたシグナルを発行しているコードでは、スレッドがビジーであるため更新されません。そのとき、for ループでコスト操作を使用します。その目的のためQCoreApplication::processEvents()に、ループの各反復で次のような遅延信号を送信できるように使用します。

foreach(const QVariant& item, _manifestFile) {
    setStatusString(QString("Checking file %1 of %2...").arg(currentProcessingFile++).arg(totalFilesCount));
    QCoreApplication::processEvents();  // TODO remove
    //...
}

上記で説明しsetStatusStringた変数のセッターはどこにありますか:QString

void Updater::setStatusString(const QString &statusString) {
    _statusString = statusString;

    emit statusStringChanged();
}

それを削除して信号を発信できるようにするにはどうすればよいprocessEvents()ですか? スレッド化された、Qt-meta オブジェクトなど、あらゆる解決策を歓迎します。

4

1 に答える 1