QTGUI - 如何在来自其他类的主窗口上打印消息(QString)?

Posted

技术标签:

【中文标题】QTGUI - 如何在来自其他类的主窗口上打印消息(QString)?【英文标题】:QTGUI - How to print a message(QString) on the mainwindow that comes from other Classes? 【发布时间】:2015-09-02 08:16:53 【问题描述】:

这个问题听起来很简单,但我一直在努力解决。

我有 a.h、b.h、c.h、mainwindow.h

还有a.cpp、b.cpp、c.cpp、main.cpp、mainwindow.cpp

在a、b、c这些C++类中我有一些自定义函数,它们之间的共同点是它们都使用“printf”来打印一些消息(因为它们都来自C++)。

在我的 UI 中,我拖动文本编辑并使用“ui->textedit->append(QString str)”打印出消息。

如果写在“mainwindow.cpp”中,上面的代码可以正常工作,但我希望 a、b、c 类中的那些消息也可以打印在我的文本编辑组件中。

我该怎么办?

【问题讨论】:

这个问题有点模糊或太笼统。 qt 方式是在文件中定义的对象中创建一个信号,并将其连接到主窗口中的一个插槽。信号发送您要显示的消息,插槽负责显示它。 您的abc 类应在您放置 printf 的同一位置发出带有文本的信号,并且这些信号应连接到主窗口中的插槽在其 textedit 中设置文本。 【参考方案1】:

有两种方法可以解决这个问题:

    在主窗口中创建一个以 QString 作为参数的公共方法。此函数将使用 ui->textedit->append() 将传入的字符串写入文本编辑小部件。 以与 1 中大致相同的方式使用信号/插槽组合。

在 a, b cnd c 中,您将使用函数调用或发出信号来替换 printf 的出现。

我可能会选择第二个选项。

【讨论】:

以上是关于QTGUI - 如何在来自其他类的主窗口上打印消息(QString)?的主要内容,如果未能解决你的问题,请参考以下文章

从 PyQt 的主窗口打开 Ui_Form

Python - 如何显示窗口+打印文本?它只打印但不显示窗口

隐藏 qdialog 并显示主窗口

为啥打印在 python 窗口的主块之外执行 3 次?

在 Windows 上打印 - 多个子窗口

如何从 ExtJS 商店打印(或警告)值?