有人可以帮助消除如何在没有用户输入的情况下更新 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 屏幕。但是,我不想依赖用户进行屏幕更新。我希望能够运行磁盘扫描和其他功能并定期更新屏幕,以便用户可以看到进度并知道程序仍在运行并且没有死机。
我在尝试理解这一点时研究的一些资源包括: