ホームに戻る
Qt(ボタン編)
0、はじめに
ボタンを押すと何かをする機能を実装します。
具体的にはボタンを押すと Hello World! が出るようにします。
1、シグナルとスロット
引き金となる動作をシグナルと呼ぶ。
シグナルに応じて対応する動作をスロットと呼ぶ。
ここではシグナルとスロットを関連づける。
文章の説明が難しいので下の図を用いる。
まずボタンとラベルを貼り付けておく。
@をクリック。
Aボタンからドラッグアンドドロップでウィンドウ外へ繋ぐ。
Bウィンドウが出るので clicked を選択する。
Cの編集をクリック
D「+」を押して f() を記述する。
→OK→OK
これで pushButton のシグナル clicked を設定。
MainWindow のスロット f() を呼ぶように設定したことになる。
ちなみに、
「QWidget から継承したシグナルとスロットを表示する」
をチェックしスロットに close() を選ぶとウィンドウを閉じる動作になる。
特に関数名を気にしないのであれば、
ボタンを右クリックして「スロットへ移動」を選択すればよい。
すると、自動的に関数が用意される。
2、f() の記述
ボタンをクリックするシグナルに対応するスロット f() を記述する。
mainwindow,h と mainwindow.cpp を次のように書き換える。
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
protected slots:
void f();
};
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
void MainWindow::f()
{
ui->label->setText("Hello World!");
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}