У меня есть два процесса, которые обмениваются сообщениями друг с другом.
Процесс A является обычной (то есть не-qt) программой, которая отправляет сообщения процессу B.
Процесс B - это приложение QT GUI, отображающее полученные сообщения в текстовом поле.
Я создал настраиваемый виджет (называемый ShowMessages), который наследуется от QPlainTextEdit и читает сообщения из канала по истечении таймера, и добавляет их в текстовое поле.
Код на самом деле не спроектирован таким образом (я думаю, это был бы довольно плохой дизайн), но здесь все просто.
По причинам, которые я не скажу, процесс A не может быть остановлен, пока я создаю форму с помощью qt-designer.
Проблема в том, что, хотя я использую qt designer (таким образом выбирая виджет 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, чтобы узнать, нахожусь ли я в конструкторе? Считаете ли вы, что различие между конструктором и кодом времени выполнения "плохо"?
(извините за ошибки, но английский не является моим основным языком)