0

ユーザー入力なしで GUI ウィンドウを更新する方法の混乱を解消するのに役立つ人はいますか。

言い換えれば、コンソールと GUI ウィンドウのいずれかまたは両方にテキストを出力できるようにしたいと考えています。

現時点では、GUI ウィンドウ (たとえばラベル付きのウィンドウ) を呼び出して、初期テキストを出力できます。ただし、ウィンドウが閉じるまでプロセスは C++ コードに戻りません。GUIウィンドウが終了する前にGUI画面を更新する方法(またはコードの場所)を見つけようとしています。

これは例です:

#include <gtkmm.h>
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    Gtk::Main kit(argc, argv);

    Gtk::Window window;
    Gtk::TextView textview;
    Gtk::Label label;

    string mylabeltext = "This is the first line of text in my gui window.\n";

    window.set_default_size(600, 360);
    window.set_title("Gtkmm Programming - C++");
    window.set_position(Gtk::WIN_POS_CENTER);

    label.show();
    window.add(label);

    label.set_text(mylabeltext);

    mylabeltext += "About to run some routines...\n";

    label.set_text(mylabeltext);

    cout << "An initial line has been set to the gui window." << endl;
    // The Gui Window is displayed
    Gtk::Main::run(window);
    // Now my main program has performed some functions and wants to update
    // the console and the gui window.
    cout << "Continuing after various functions and processing..." << endl;
    mylabeltext = "Showing the results of the functions and processing.";
    label.set_text(mylabeltext);

    return 0;
}

テキストの最後の行は、GUI が終了するまでコンソールに出力されません。mylabeltext の最後の行がラベル ウィンドウに出力されることはありません。

私が説明しようとしているのは、C++ コードで他のルーチンを実行している間、gtkmm ウィンドウをアクティブに保ち、GUI ウィンドウを閉じずにコンソールと GUI ウィンドウの両方に出力を更新して C++ ルーチンを続行する方法です。

私が見つけることができるすべての例は、コードでボタンを使用しています。ボタンが押された後にGUI画面を更新できるように、十分なテストと実験を行いました。ただし、画面の更新をユーザーに依存する必要はありません。ディスク スキャンやその他の機能を実行し、定期的に画面を更新して、ユーザーが進行状況を確認し、プログラムがまだ機能しており停止していないことを確認できるようにしたいと考えています。

これを理解するために私が研究したリソースには、次のものがあります。

4

2 に答える 2