水瓶座列車

どこまで行けるか、とりあえず発車します。

Qtで入力した文字を取り込むやり方

 

Qtアプリケーションを作成する時に、アプリログイン画面ならユーザーIDやパスワードの入力、

家計簿アプリなら金額入力など、ユーザーが入力した文字をプログラム内に取り込みたい場合があります。

ここでは、Qtで文字を取り込むために使用するクラスやAPIの使用方法について書いていきたいと思います。

また、文字の取り込みだけではなく、取り込み時の挙動やエラー時処理についても説明していきます。

 

 

 

 

1.文字取り込みのQtCreatorのデザイン画面

 

ここでは、文字の取り込みは、以下のような仕様で取り込むようにします。

1.入力欄に文字を入力する。 入力文字数は、最大5文字までとする。

2.入力文字は、数字のみで、その他の文字が含まれる場合はエラーとする。

3.ボタンを押して入力文字を取り込み、取り込んだ文字をラベルに表示する。

 

文字取り込みで使用するウィジェットは、LineEditウィジェットとPushButtonウィジェット、Labelウィジェットで、QtCreatorで、下記のように配置します。

 

2.プログラムの流れと説明

 

使用するクラスとしては、QLineEdit、QPushButton、QLabelを使用します。

そして、全体のプログラムとしては、以下のような感じです。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#define LEN 5 // 入力できる最大文字数

static QString sInputText; // 入力文字を保持する変数。

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
{
  ui->setupUi(this);
  ui->lineEdit->setClearButtonEnabled(true); // クリアボタンの設置
  ui->lineEdit->setMaxLength( LEN ); // 文字数は、最大5文字にする。
}

MainWindow::~MainWindow()
{
  delete ui;
}

void MainWindow::on_pushButton_clicked()
{
  QString inputText = ui->lineEdit->text(); // 入力文字を一時保存する。
  if( inputText.toInt() ){ // 入力文字が数字か判定する。
    // 数字入力の場合、取り込む。
    sInputText = inputText; // 入力文字をプログラム内に保持する。
    ui->label->setText(sInputText); // ラベルに入力文字を表示する。
  }
  else {
    // 数字以外の文字はエラー。
    ui->label->setText("error!!"); // ラベルにエラーを表示する。
  }
  ui->lineEdit->setText(""); // 入力欄を空にする。
}

 

まず、QLineEditクラスの初期処理としてMainWindowのコンストラクタで、

・QLineEditクラスのsetMaxLength()で、入力文字の最大数を設定

・QLineEditクラスのsetClearButtonEnabled()で、入力欄内の右端にクリアボタンを追加

を行っています。

 

そして、PushButtonボタンを押した時に処理されるon_pushButton_clicked()関数では、

1.入力文字が数字かどうかの判定を行い、数字の場合は、プログラム内のstatic変数に文字を保存して、

  保存した文字をQLabelクラスのsetText()関数でラベルに表示しています。

2.数字以外の場合は、QLabelクラスのsetText()関数でラベルにエラーを表示しています。

3.入力文字のエラー有無にかかわらず、QLineEditクラスのsetText("")で入力欄を空にしています。

を実装しています。

 

入力文字エラー時の処理は、ほとんどの場合、取り込まずに無視して入力欄をクリアするのみで大丈夫ですが、

パスワード入力エラーなど入力回数によって入力欄を入力させないようにロックするなど、アプリ設計に応じて処理すると良いです。

 

3.プログラムの実行

 

2項のプログラムを実行すると下記のように表示されます。

 

まずは、入力欄に数字を入れ、6文字以上は、入力できないことを確認します。

入力された文字の横にホウキのようなマークがありますが、

これがQLineEditクラスのsetClearButtonEnabled()による入力欄のクリアボタンになります。

 

「PushButton」ボタンを押すと、TextLabelの文字が入力した数字に変わり、取り込めたことを確認します。入力欄もクリアされていることを確認します。

 

次に入力欄に英文字を入力します。

 

同じように、「PushButton」ボタンを押すと、error!!と表示され、入力した文字が取り込まれていないことを確認します。

 

以上で、Qtで入力した文字を取り込むやり方になります。

 

4.最後に

 

文字を取り込む条件やエラー処理など、自分なりにいろいろ変更してトライしてみてください。

 

<関連・おすすめ記事>

Linux勉強用の中古パソコンおすすめショップランキング - 水瓶座列車

無線で複数台接続できるトラックボールマウスのおすすめランキングベスト5 - 水瓶座列車

画面分割できるパソコンディスプレイのおすすめランキングベスト5 - 水瓶座列車

Bluetoothでマルチペアリング(複数台接続)できるマウスのおすすめランキングベスト5 - 水瓶座列車