2016-10-10 1 views
0

合図するQTextEdit /スロットメカニズム渡す方法:私は単に2つのクラスを持って、私はQtの5.7私はシグナルとスロットとそのパラメータについてここでいくつかのトピックを読みますが、以下の問題については何も見つからなかった

で働いています を、 1stの中で、文字列メッセージの位置(または特定のオブジェクト)のどこに表示するかを指定したい。

は、今ではこのようなものです:私は、信号を発する第一クラスがあります。

emit signalWriteToTextEdit("hallo","textEdit_3"); 

を私は何をしたいことは何とかオブジェクトのTextEditのように2番目の引数として渡しています。今はQStringがありません。第二クラス内

はスロットです:

void writeToTextEdit(QString info, QString where){ 
    where.append(info); //I would like to do something like this 
} 

はちょうどその二番目のパラメータたとえばテキストエディットのための「」としてアクセス可能なオブジェクトを検討する方法を知らないので、私はその内容を変更することができます。

これが可能であるならば、私も考えています:

  1. は名前で要素を見つけることのようなUIオブジェクトのためのいくつかの方法がありますか?
  2. uiのすべての要素をforeachで調べて、名前を確認することはできますか?私はしようとしたが、それを通過する方法を知らない。

その明確でない場合は、私は少し掘りした後

+1

あなたは 'QSignalMapper'を使うかもしれません。http://doc.qt.io/qt-5/qsignalmapper.html –

+0

@DmitrySazonovありがとう、私はそれを読むつもりです –

+1

Btw、オブジェクトへのポインタがあれば" secondなぜあなたは単にメソッドを呼びたくないのですか?なぜそこに信号が必要ですか? –

答えて

0

多くを説明します、私はQObject::findChild機能に出くわしました。これは、UIを介して再帰的に文字列ルックアップを可能にします。詳細について

編集:

そのようなオブジェクトが存在しない場合は、このタイプのTにキャストすることができ、それが呼び出されるオブジェクトname、または0の子を返します。 name引数を省略すると、すべてのオブジェクト名が一致します。検索は再帰的に実行されます。

検索に一致する子が複数ある場合は、最も直接的な 祖先が返されます。いくつかの直接祖先がある場合、返されるのは未定義の です。その場合、findChildren() を使用する必要があります。(それは常にウィジェットでない場合)

+0

うん、私はそれを見つけましたが、このメソッドは私のUIオブジェクトを持っていません –

+1

@あなたはUIオブジェクトの 'setupUi()'メソッドに渡したウィジェットでそれを呼び出します。 –

+0

知らんなぜ、それは私が親にそれをやろうとし、違反エラーがアクセスも提供します AP(QWidgetの*親) \t:QWidgetの(親) { \t ui.setupUi(この); } –

0

ただ、引数の型

signals: 
    void writeToTextEdit(const QString &what, QWidget *where) 

か、それは常に、さらにより具体的に

signals: 
    void writeToTextEdit(const QString &what, QTextEdit *where) 

それもののQTextEditであるかのようにQWidget*またはQObject*を使用ターゲットオブジェクトにアクセスできる場合にコードがシグナルを送出する必要がある理由が明確でない場合は、setTextを直接呼び出すことができます。

+0

まあ、guiクラスは受信者で、もう一方のクラスはアクセスしていません。 あなたの解決策はありますが、新しいQTextEditまたはQWidgetを作成したくない場合は、どうすればそれを発行することができますか?私の言っていることが分かるよね? –

+0

は実際にあなたの目標が何であるかによって異なります。新しいオブジェクトを作成してレシーバーにレイアウトに追加させる場合は、「はい」を選択します。しかし、この場合は、新しいウィジェットを放してその内容を前もって設定することができます。 しかし、そうでないように思われる質問のコメントを読むことから。出力の種類が異なる場合は、G.Mに同意します。どのようにしてそれを処理したいのかというタイプとターゲットをソースが決定するようにする必要があります。 型の異なる信号によって、または受信者がスイッチを入れることができる型引数を持つことによって –

関連する問題