C ++でのループの進行状況を表示するQMLでのプログレスバーの実装

user3405291

C ++コードと一緒にQMLUIがあります。その進行状況を示す必要がある私のループは、次のようにC ++で開発されています。

for(unsigned int j = 0; j < Count; ++j) {
    // Do stuff
}

QMLコードでは、次のようにプログレスバーを使用する必要があります。

ProgressBar {
    value: j  // Should come from C++ loop
              // It is "j" on C++ loop
    from: 0   // C++ loop starts out with 0
    to: Count // C++ loop ends with "Count"
}

C ++ループとQMLプログレスバーを相互にリンクする必要がある方法がわかりません。関連する例が見つかりませんでした誰かが私にヒントを与えることができますか?


私のC ++とQMLの間の通信は、次のQ_PROPERTYように使用して行われますが、使用方法がわかりません。

Q_PROPERTY(float j READ j WRITE setJ NOTIFY jChanged)
フロガット

それは簡単です!ステップバイステップで行きましょう。

  1. C ++クラスはQObjectQ_OBJECT内部でマクロを拡張して使用する必要があります私はそれWorkerを例えば呼びます

    class Worker : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(float progress READ progress NOTIFY progressChanged)
    public:
        Q_INVOKABLE void start() {
            // start the worker thread in which your loop spins
        }
        float progress(); // progress getter
    signals:
        void progressChanged(float progress);
    };
    
  2. バックグラウンドスレッドを開始し、独自のprogressChangedシグナルを定義します

    for(unsigned int j = 0; j < Count; ++j) {
        // Do stuff
        emit progressChanged(/*current progress*/);
    }
    
  3. バックグラウンドスレッドprogressChangedをメインスレッドのリビングオブジェクトWorkerprogressChangedシグナルに接続します(キュー接続)。このステップは、バックグラウンドスレッドからQMLにシグナルを中継するために必要です。

  4. C ++クラスをQMLにリンクします。

    int main(int argc, char *argv[]) {
        QGuiApplication app(argc, argv);
    
        QQuickView view;
        Worker w;
        view.engine()->rootContext()->setContextProperty("worker", &w);
        view.setSource(QUrl::fromLocalFile("MyItem.qml"));
        view.show();
    
        return app.exec();
    }
    
  5. QML側で信号を聞きます。

    ProgressBar {
        id: prg
        from: 0   // C++ loop starts out with 0
        to: Count // C++ loop ends with "Count"
    
        Connections {
            target: worker
            onProgressChanged: prg.value = progress;
        }
    }
    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#HttpClientPostAsyncを使用してアップロードの進行状況を表示する方法

分類Dev

進行中の画像の読み込みの進行状況を表示するにはどうすればよいですか-バーc#

分類Dev

C#:HttpClient、MultipartFormDataContentとして複数のファイルをアップロードするときのファイルアップロードの進行状況

分類Dev

QT C ++は進行状況の合計で複数のファイルをダウンロードします

分類Dev

QT C ++は進行状況の合計で複数のファイルをダウンロードします

分類Dev

javafx:プロセスの進行状況を表示するプログレスバー?

分類Dev

C#ProgressBarがメディアプレーヤーの進行状況を表示しない

分類Dev

Cのマージソートプログラムでバブルソートを実装する際のエラー

分類Dev

C ++でのスレッドプール-プログラムを終了する方法

分類Dev

C#を使用してProgressBarにダウンロードの進行状況を表示する

分類Dev

ブートストラッププログレスバーを使用して、アップロードの進行状況をモーダルで表示する

分類Dev

進行状況追跡C#を使用したファイルのアップロード

分類Dev

C ++で埋め込まれたPythonスクリプトの進行状況を見積もる

分類Dev

C ++を使用したマルチスレッドアプリケーションでグローバル時間(実時間)を測定する最速の方法

分類Dev

Cプログラミング。ヘッダーファイル(.h)でそのインスタンスを参照する必要がある場合に、.cで構造体の実装を非表示にする方法

分類Dev

C ++-1つのサーバースレッドと1つのクライアントスレッドを同じプログラムで実行する

分類Dev

計算の進行状況を報告するCの方法は何ですか?

分類Dev

プロトバッファ用のC ++でByteSize()を実装するためのセグメンテーション違反の取得

分類Dev

C ++プログラムでのプロセス完了のパーセンテージを表示する

分類Dev

C ++ 11での単純な汎用スレッドプールの実装

分類Dev

saop エンベロープ メッセージの SOAP レシーバーを実装する方法 c#

分類Dev

C#関数の実行中にプログレスバーを埋める

分類Dev

Essenceフレームワークでファイルのアップロードの進行状況を表示する

分類Dev

C#でプロセッサ/ IOの重いマルチスレッドタスクの同時実行を制限するためのトークンシステムを実装するにはどうすればよいですか?

分類Dev

Cでループするコールバック関数のグローバル変数を変更する

分類Dev

10進数を2進数に変換するこのC ++ループのロジックは何ですか

分類Dev

プログラムで進行状況のドローアブルを作成する

分類Dev

Cプログラミングでスタックのプッシュメソッドを実装する

分類Dev

forループを使用したC ++での反復自己相関プロセスの実装

Related 関連記事

  1. 1

    C#HttpClientPostAsyncを使用してアップロードの進行状況を表示する方法

  2. 2

    進行中の画像の読み込みの進行状況を表示するにはどうすればよいですか-バーc#

  3. 3

    C#:HttpClient、MultipartFormDataContentとして複数のファイルをアップロードするときのファイルアップロードの進行状況

  4. 4

    QT C ++は進行状況の合計で複数のファイルをダウンロードします

  5. 5

    QT C ++は進行状況の合計で複数のファイルをダウンロードします

  6. 6

    javafx:プロセスの進行状況を表示するプログレスバー?

  7. 7

    C#ProgressBarがメディアプレーヤーの進行状況を表示しない

  8. 8

    Cのマージソートプログラムでバブルソートを実装する際のエラー

  9. 9

    C ++でのスレッドプール-プログラムを終了する方法

  10. 10

    C#を使用してProgressBarにダウンロードの進行状況を表示する

  11. 11

    ブートストラッププログレスバーを使用して、アップロードの進行状況をモーダルで表示する

  12. 12

    進行状況追跡C#を使用したファイルのアップロード

  13. 13

    C ++で埋め込まれたPythonスクリプトの進行状況を見積もる

  14. 14

    C ++を使用したマルチスレッドアプリケーションでグローバル時間(実時間)を測定する最速の方法

  15. 15

    Cプログラミング。ヘッダーファイル(.h)でそのインスタンスを参照する必要がある場合に、.cで構造体の実装を非表示にする方法

  16. 16

    C ++-1つのサーバースレッドと1つのクライアントスレッドを同じプログラムで実行する

  17. 17

    計算の進行状況を報告するCの方法は何ですか?

  18. 18

    プロトバッファ用のC ++でByteSize()を実装するためのセグメンテーション違反の取得

  19. 19

    C ++プログラムでのプロセス完了のパーセンテージを表示する

  20. 20

    C ++ 11での単純な汎用スレッドプールの実装

  21. 21

    saop エンベロープ メッセージの SOAP レシーバーを実装する方法 c#

  22. 22

    C#関数の実行中にプログレスバーを埋める

  23. 23

    Essenceフレームワークでファイルのアップロードの進行状況を表示する

  24. 24

    C#でプロセッサ/ IOの重いマルチスレッドタスクの同時実行を制限するためのトークンシステムを実装するにはどうすればよいですか?

  25. 25

    Cでループするコールバック関数のグローバル変数を変更する

  26. 26

    10進数を2進数に変換するこのC ++ループのロジックは何ですか

  27. 27

    プログラムで進行状況のドローアブルを作成する

  28. 28

    Cプログラミングでスタックのプッシュメソッドを実装する

  29. 29

    forループを使用したC ++での反復自己相関プロセスの実装

ホットタグ

アーカイブ