有人可以帮助解决如何在没有用户输入的情况下更新gui窗口的困惑。如何在C++代码创建后更新gtkmm 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++代码中运行其他例程并将输出更新为控制台和gui窗口而不关闭GUI窗口以继续C++例程的同时保持gtkmm窗口处于活动状态。
我可以找到的所有示例都使用代码中的按钮。我已经测试和足够的实验了,我可以在按下按钮后更新GUI屏幕。但是,我不想依靠用户进行屏幕更新。我希望能够运行光盘扫描和其他功能,并定期更新屏幕,以便用户可以看到进度并知道该程序仍在工作而不是死机。
一些,我已经在我的尝试是了解该研究的资源包括:
- https://developer.gnome.org/
- https://developer.gnome.org/gtkmm-tutorial/3.2/gtkmm-tutorial.html
- http://en.wikipedia.org/wiki/Gtkmm
使用定时器或闲置。 – tp1
我不明白你对计时器的意思。但是,如果我在运行sleep()函数之后尝试附加新文本,则每个sleep()函数之后都不会出现窗口。如果我在窗口显示后添加sleep()函数,窗口将保持显示,并且sleep()函数将永远不会执行,直到gui窗口退出。 –