我有两个相互交换消息的进程。进程 A 是一个普通(即非 qt)程序,它向进程 B 发送消息。进程 B 是一个 QT GUI 应用程序,将接收到的消息显示到一个文本框中。
我创建了一个自定义小部件(称为 ShowMessages),它继承自 QPlainTextEdit,并在计时器到期时从管道读取消息,并将它们附加到文本框中。代码并不是这样设计的(我认为这将是非常糟糕的设计),但这只是为了让事情变得简单。由于我不知道的原因,当我使用 qt-designer 创建表单时,进程 A 无法关闭。
问题是当我使用 qt 设计器时(因此选择 ShowMessages 小部件并将其放在窗口中),即使我在设计器中,小部件也开始显示消息。这个功能很酷,但问题是当我保存表单时,已经存在的消息保存在 .ui 文件中,这导致当我启动进程 B 时出现不良行为(因为进程开始显示我在创建阶段收到的消息) .
我可以在进程 B 启动后清理文本框,但我认为避免消息出现在 .ui 文件中要好得多。我想要的是能够为小部件编写这样的代码:
if <I'm not in the designer>
timer = QtCore.QTimer(self)
QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"), self, QtCore.SLOT("on_timer()"));
timer.start(2000)
是否有 qt 函数可以知道我是否在设计器中?你认为区分设计器和运行时代码是“坏的”吗?
(抱歉有错误,但英语不是我的主要语言)