環境:QT5.5
マウスでクリックされたテキストフィールドに、フォーカスをします。
Qt Creatorの画面で
LienEditオブジェクトを4つ作成、それぞれ名前を key1,key2,key3,key4 としています。maxLengthを4に指定しています。
リンク
http://doc.qt.io/qt-5/qobject.html
インクルードファイル
#include
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;
}
コメント