• 締切済み

Qt SIGNALでのメソッドの呼び出し方

いままでは、C#で開発していましたが、諸事情で環境をQt/C++にすることにしました。 Qt初心者です。 早速なんですが、 Qtで、ボタンクリックのイベントにメソッドを指定する方法はどのようにすればいいのでしょうか? C#での、 Button button= new Button(); button.Click += new EventHandler(button_Click); void button_Click(object sender,eventArgs e) { messageBox.Show(”メソッド呼び出し”); } これを、Qtで実現したいです。 webで検索しても、 『ボタンクリック時に、ラベルテキストを変更』 などのサンプルはあったのですが、メソッドの呼び出しについてはなかったので、 いくら手探りでやってもできないので質問させて頂くことになりました。 どうしてもわかりません。 どなたか教えてください。 よろしくお願いします。

みんなの回答

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

シグナルとスロットがわからないということでしょうか? まずは本でも読んで、基礎的な知識を仕入れることから始めたほうがいいと思いますよ。 http://qt-project.org/wiki/How_to_Use_QPushButton http://www.kde.gr.jp/~ichi/qt/t2.html

参考URL:
http://www.amazon.co.jp/s/rh=k%3AQt%2Cn%3A466298&keywords=Qt

関連するQ&A

  • C#での書き方

    vb.netでは別のイベントを呼び出すとき下記のような書き方ができたのですが、C#ではどう書くんでしょうか? (ボタン2を押したらボタン1の処理が走る) Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click MessageBox.Show("AAA") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Button1_Click(sender, e) End Sub

  • 仮想メソッドをoverrideすると怪しい動作

    こんにちは。C#で仮想メソッドの勉強をしています。Form1でボタンを押すとフォームが閉じるメソッドを書きました。 Form2でoverrideしてメッセージボックスを表示するようにメソッドを再定義しました。 ここで問題なのですが、Form2でcmdCloseボタンをクリックすると「閉じます」というメッセージを表示した後に、もう一度「閉じます」というメッセージが表示されます。 2回メッセージが表示されるのが腑に落ちなく、何が原因なのかお教え頂きたく思います。よろしくお願いします。 Form1 /******************************************************************************/ // フォームクローズ /******************************************************************************/ protected virtual void cmdClose_Click(object sender, EventArgs e) { this.Close(); } Form2 /******************************************************************************/ // フォームクローズ /******************************************************************************/ protected override void cmdClose_Click(object sender, EventArgs e) { MessageBox.Show("閉じます"); }

  • C++でメッセージボックスを表示したい

    C++でメッセージボックスを表示したい フォーム上にbutton1を設置しました。 クリックして、メッセージボックスを表示したいのですがどうすればいいのかわかりません。 vb.netで言う Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show("test") End Sub をC++で書くとどうなるんですか? button1をダブルクリックして private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { } }; を表示させたのですが、どこにMessageBoxを入れればいいのか教えてください。 よろしくお願いします。

  • C# フォーム追加後、旧フォームを閉じたい

    前略 ・C#で教えてください。 ・Form1 からshowDiag()メソッドでForm2をつくります。Form2が表示されたら非アクティブとなったForm1を閉じたいのですが どのようにしたらよいのかおしえてください。  下記は、Close() メソッドで Form2側から閉じようとしたプログラムですがFrom1を閉じることができません。 よろしくお願いします。 //----------------------------------------------- namespace formClose { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ShowDialog(); } }   public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { Form1 form1 = new Form1(); form1.Close(); //Form1が閉じない!! } private void button1_Click(object sender, EventArgs e) { this.Close(); //Form2を閉じる }    } } 以上

  • Sleep(0)について

    VS2010C++でWindowsフォームアプリケーションをつくろうとしています。 ループさせたいイベント(button1)中に、button2のイベントを行いたいのでSleep(0)を使って以下のようにしました。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { while(1){ Sleep(0); // ループさせたいイベント ・・・・・・・・・・・・・・・・・・・・ } } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {    ・・・・・・・・・・・・・・・・・・・・ } アプリケーション起動後button1をクリックすると、Sleep(0)が無いときと同じようにボタンを受け付けなくなります。 Sleep(0)の使い方が間違っているのでしょうか。

  • [C#]FormクラスのShowメソッドの挙動について

    C#のSystem.Windows.Forms.FormクラスのShowメソッドについて調べています。 Showメソッドを使うことで、モードレスでフォームを表示できます。 http://msdn2.microsoft.com/ja-jp/library/39wcs2dh.aspx 例えば、ボタンがクリックされたときに、モードレスでフォームを表示する場合は、以下のようになると思います。 // ボタンがクリックされたときにコールされるメソッド private void button1_Click(object sender, EventArgs e) { MyForm form = new MyForm(); // MyFormはFormの継承クラス form.Show(); } このとき、button1_Clickメソッドが終了しても、 つまり、変数formのスコープから処理が外れても、MyFormは表示され続けます。 別スレッドで表示しているのかと思いましたが、MyFormを表示してもスレッド数は変わりませんでした。 なぜ、変数formのスコープから処理が外れても、MyFormが表示され続けるのかわかりません。 どなたかご存知の方がいらっしゃいましたら、ご教授いただけると幸いです。 環境 : WindowsXP SP2, .NET Framework 2.0, Visual Studio 2005

  • イベントハンドラ関数について

    現在VC++/CLR 2005 でプログラミングをしています。 基本的な事柄かもしれませんが、質問させてください  以下の2つのボタンのイベントハンドラ関数があった場合 //ボタン1のイベントハンドラ関数 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { } ボタン2をクリックしたときの動作とボタン1の動作を同じにしたいと思っています。 その場合は private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) String^ str = textBox1->Text } //ボタン2のイベントハンドラ関数 private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { String^ str = textBox1->Text } のようにボタン2のイベントハンドラ関数をボタン1と同じように書けばいいのですが イベントハンドラ関数の処理が膨大になった場合を考えて省略する 書き方は無いのでしょうか?(以下の場合ですとエラーが起こってしまいます。) private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { button1_Click(); } 宜しくお願いします

  • C#でオブジェクトの有無を取得する

    オブジェクトが作られている時と作られていない時で処理をわけたいのですがうまくいきません。 この書き方の何がまずいのでしょうか? namespace オブジェクト検索 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Control c = Controls["form2"]; if (c != null) { ((TextBox)c).Text += "*"; } } private void button2_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); Application.DoEvents(); } } } ボタン2を押した時に新しいフォームが立ち上がり、そのフォームがあるときは*が出るようにしたいです。

  • VB2013でのプログラム作成でつまづきました

    初めまして ご質問です 会社にて、職場改善のため VB2013でプログラムを作成していますが PCに詳しいのが自分しかいなく、指名されました。。。 もちろん自作PCとか作れるぐらいですが プログラムなんてやったことないし困っています 職場にプログラム専門の方がいるので教育を受けていますが 2.3回教えてもらって  「windowsの電卓を作ろう」と言われました 電卓作成は、初心者用の題材らしいですが とりあえず教えてもらった事を駆使し まずは、テキストボックスとテキストボックスに数字を入れ その二つを +や-ボタンを押し =ボタンを押すと、3つ目のテキストボックスに表示させるという 簡単なプログラムは、なんとかできましたが windowsぽくすると 例 11 + 12 - 9 とテキストに表示され =ボタンを押すと 表示が消え 計算結果が表示されます いまの問題 ・整数と文字列を表示させ、計算だけさせる ・変数宣言、IF、Serectしか教わってない(それだけでできる言われた笑) ・まだ、いまいちわかっていないため 詳しく知りたい 無論、教えてもらったコードをそのまま使いたいわけじゃなく どーいう流れで、どーいう風にというのを理解したいです 結局は自分が理解して、少しずつやらないといけないので 詳しい方、教えてください。 現在なにもできてないコードです ここにどう埋めるか教えてほしいです ------------------------------------------------------------------------------ Option Explicit On Public Class Form Public oboe As String '押されたボタンが数値以外を覚える変数 Public befor As String '押されたボタンが数値の場合 覚える変数 Public anser As Integer ' 計算結果を保存する 変数 Public number As Integer '入力された数値を保存する 変数 Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '1 befor = "1" ans.Text &= "1" End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '2 befor = "2" ans.Text &= "2" End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '3 befor = "3" ans.Text &= "3" End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click 'たし算 oboe = "+" ans.Text &= "+" number = befor + ans.Text End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '掛け算 End Sub Private Sub Button4_Click_1(sender As Object, e As EventArgs) Handles Button4.Click '計算 End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click 'CLEAR End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '引き算 End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '割り算 End Sub Private Sub ans_TextChanged(sender As Object, e As EventArgs) Handles ans.TextChanged

  • 他のFormのクリックイベント

    教えてください! 他のFormのクリックイベントを実行できますか? Form2のButton2をクリックした時に、Form1の「Button1_Click」を実行させることができますか? 出来るとしたら、Form2の「Button2_Click」にはどのように記載したらいいのでしょうか? [Form1]より Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)・・・ [Form2]より Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)・・・ End Sub 宜しくお願いします。