有人可以幫助解決如何在沒有用戶輸入的情況下更新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窗口退出。 –