私は、メッセージを互いにエキスディングする2つのプロセスがあります。 プロセスAは、プロセスBにメッセージを送信する通常の(つまりqt以外の)プログラムです。 プロセスBは、受信したメッセージをテキストボックスに表示するQT GUIアプリケーションです。デザイナコードとランタイムコードを区別する
QPlainTextEditを継承し、タイマーが切れたときにパイプからメッセージを読み込んでテキストボックスに追加するカスタマイズされたウィジェット(ShowMessagesと呼ばれる)を作成しました。 コードは本当にこのように設計されていません(これはかなり悪いデザインだと思いますが)ここでは単純にするだけです。 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関数はありますか?デザイナーとランタイムコードの区別は「悪い」と思いますか?