スポンサーリンク
ホーム»Qt逆引きマニュアル»GUI» Qt:マウスクリックされたフィールドに、フォーカスする

Qt:マウスクリックされたフィールドに、フォーカスする

当サイトは、アフィリエイト広告を利用しています

環境:QT5.5

マウスでクリックされたテキストフィールドに、フォーカスをします。

Qt Creatorの画面で
LienEditオブジェクトを4つ作成、それぞれ名前を key1,key2,key3,key4 としています。maxLengthを4に指定しています。

リンク
http://doc.qt.io/qt-5/qobject.html

インクルードファイル

1
#include <QObject>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
	// イベントフィルターのインストール
	ui->key1->installEventFilter(this);
	ui->key2->installEventFilter(this);
	ui->key3->installEventFilter(this);
	ui->key4->installEventFilter(this);
}
bool MainWindow::eventFilter(QObject* obj, QEvent* event) {
 
    // マウスクリックイベント
    if ( event->type() == QEvent::MouseButtonPress ) {
 
        // フォーカス処理
        if ( obj->objectName() == "key1" ) {
            ui->key1->setFocus();
            ui->key1->setCursorPosition(0);
        } else if ( obj->objectName() == "key2" ) {
            ui->key2->setFocus();
            ui->key2->setCursorPosition(0);
        } else if ( obj->objectName() == "key3" ) {
            ui->key3->setFocus();
            ui->key3->setCursorPosition(0);
        } else if ( obj->objectName() == "key4" ) {
            ui->key4->setFocus();
            ui->key4->setCursorPosition(0);
        }
    }
 
    // true を返すと表示されなくなるため注意
    return false;
 
}

コメント

タイトルとURLをコピーしました