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 方式是在文件中定义的对象中创建一个信号,并将其连接到主窗口中的一个插槽。信号发送您要显示的消息,插槽负责显示它。 您的a
、b
、c
类应在您放置 printf 的同一位置发出带有文本的信号,并且这些信号应连接到主窗口中的插槽在其 textedit 中设置文本。
【参考方案1】:
有两种方法可以解决这个问题:
-
在主窗口中创建一个以 QString 作为参数的公共方法。此函数将使用 ui->textedit->append() 将传入的字符串写入文本编辑小部件。
以与 1 中大致相同的方式使用信号/插槽组合。
在 a, b cnd c 中,您将使用函数调用或发出信号来替换 printf 的出现。
我可能会选择第二个选项。
【讨论】:
以上是关于QTGUI - 如何在来自其他类的主窗口上打印消息(QString)?的主要内容,如果未能解决你的问题,请参考以下文章