ホームに戻る
 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;
}

inserted by FC2 system