環境: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; } |
コメント