2012-05-07 15 views
1

私はQtのでMS VS 2008を使用してダイアログGoToCellDialogセットアップしようとジャスミンBlanchettes帳失敗した信号/スロット接続をデバッグする方法は?

C++-GUI-Programming-with-Qt-4-1st-ed.pdf 

の第2章を次のようしています。

例がコンパイルされると、ダイアログが表示されますが、テキストの変更に関するハンドラメソッドon_lineEdit_textChanged()を入力できません。 は、それを証明するために、私はスロット方式に次の行を追加:

label->setText(tr("Changed :")); 

は、ラベル内の視覚的な変更を強制します。

.uiファイル内の要素

<connections/> 

は空です。どうしてか分かりません。

私は、コンストラクタに次の行を追加することにしました:

connect(lineEdit, SIGNAL(textChanged(const QString &)), 
this, SLOT(on_lineEdit_textChanged())); 

しかし、それは何も変わりません。

コードを生成するためにIDEを使用しましたが、最初にgotocelldialogを小文字で生成しました。 すべての名前はcamelCaseで、コードがコンパイルされます。しかし、おそらく私は何かを逃した。

+0

あなたの質問は何ですか? – UmNyobe

+2

あなたはconnect();をチェックできますか?ステートメントがtrueを返すかどうかをチェックし、Qtが特定のシグナルスロット接続を接続できない場合は警告を生成します。 – Kunal

答えて

4

私は確信して接続が十分に確立されていることを確認するために私のプログラムで使用する機能があります:

inline void CHECKED_CONNECT(const QObject * sender, const char * signal, 
      const QObject * receiver, const char * method, 
      Qt::ConnectionType type = Qt::AutoConnection) 
{ 
    if(!QObject::connect(sender, signal, receiver, method, type)) 
    qt_assert_x(Q_FUNC_INFO, "CHECKED_CONNECT failed", __FILE__, __LINE__); 
} 

これは、アサーションエラーがスローされますとすぐ接続などのプログラムを停止し、通常の接続のラッパーです失敗する。ソースコードを使用して接続する場合にのみ便利です。

関連する問題