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