3

QTを初めて使用する場合は、QTをいじって、楽しんで使用できるかどうかを確認します。QTを使用する場合は、続けてプログラムを詳しく学びたいと考えています。

ボタンのコンセプトに少し苦労しています。ボタンとテキストエディットエリアを作成しました。ボタンが押されたときにテキストエディットウィンドウにテキストの文字列を追加したい。

これを達成するためにグーグルやQTウィキで何も見つからないようです。誰かが私をその方向に向けて、少なくとも始めてこの素晴らしいツールで遊ぶことができるようにすることはできますか?

4

1 に答える 1

6

Qtでは、オブジェクト間の通信に信号とスロットが使用されています。これにより、開始するために必要な情報が提供されます。

特定のイベントが発生すると、信号が発信されます。Qtのウィジェットには多くの事前定義されたシグナルがありますが、ウィジェットをサブクラス化して独自のシグナルをウィジェットに追加することはいつでも可能です。スロットは、特定の信号に応答して呼び出される関数です。Qtのウィジェットには多くの事前定義されたスロットがありますが、興味のある信号を処理できるように、ウィジェットをサブクラス化し、独自のスロットを追加するのが一般的な方法です。

したがって、特定のケースでは、QPushButtonclicked()信号を、必要なことを実行するカスタムスロットに接続する必要があります(テキストをテキストエリアに追加します)。

 QPushButton * btn = new QPushButton("Button", this);
 connect(btn, SIGNAL(clicked()), this, SLOT(onBtnClicked()));

そして、ヘッダーでスロットを宣言する必要があります。

 private slots:
     void onBtnClicked();

そしてそれを定義します:

 void MySpecialWidget::onClick() 
 {
     // Do what is to be done
 }

すべてが正しく行われていれば、機能するはずです...それ以外の場合は、コンソールを見て、次のようなメッセージがあるかどうかを確認してください。

Object::connect: No such slot MySpecialWidget::onClick() in ...

また

Object::connect: No such signal ....

彼らはあなたに何が起こっているかについてのヒントを与えるはずです。

最後に、Qtの幅広い例を見てみることをお勧めします。

于 2012-04-17T21:40:21.493 に答える