我创建了一组监视外部应用程序的监视程序/帮助程序类,并且我希望在进行更改时将它们打印到我的 MainWindow 的 ui 内的日志窗口中。我的想法是在 main 的一个线程中创建这个观察者,但我不确定将它链接到我的 MainWindow 的最佳方法。我知道像下面这样简单地传递它是行不通的,但是由于 Qt 的设计,我不确定执行此操作的正确方法(如果有的话)。一些研究向我表明,将 MainWindow 传递给外部类并不合适,但我不确定更好的方法。
int main(int argc, char *argv[])
{
try {
std::string host = "localhost";
unsigned short port = 8193;
MainWindow w;
w.show();
// Access class for the program that I am watching
UserInterface ui(host, port);
// StatePrinter class, which is registered in the UI and will print changes to MainWindow, ideally
// would I be able to pass something in the StatePrinter constructor to accomplish my goal?
ui.registerObserver(new StatePrinter(w));
UiRunner runner(ui);
boost::thread runnerThread(boost::ref(runner));
w.show();
QApplication a(argc, argv);
runner.cancel();
runnerThread.join();
return a.exec();
} catch(std::exception &ex) {
// ...
}
}
我想有可能在 MainWindow 本身中创建这个线程,但我更喜欢将它放在 main.window 中。将我的 StatePrinter 类链接到 MainWindow 的最佳方法是什么?