「Qtのコントロール - キーボード」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「== 概要 == <br><br> == キーボード入力 == フォーカスを持つオブジェクトに破棄されたイベントは、<code>keyPressEvent</code>メソッド…」) |
|||
| 22行目: | 22行目: | ||
void MainWindow::keyPressEvent(QKeyEvent *pEvent) | void MainWindow::keyPressEvent(QKeyEvent *pEvent) | ||
{ | { | ||
switch ( | switch (pEvent->key()) | ||
{ | { | ||
case Qt::Key_Escape: | case Qt::Key_Escape: | ||
| 52行目: | 52行目: | ||
break; | break; | ||
default: | default: | ||
qDebug("keyPress %x", | qDebug("keyPress %x", pEvent->key()); | ||
break; | break; | ||
} | } | ||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 複数のキーの取得 == | |||
1つのキーボードイベントで、複数のキーを取得する。<br> | |||
<syntaxhighlight lang="c++"> | |||
QSet<Qt::Key> keysPressed; | |||
void Widget::keyPressEvent(QKeyEvent *pEvent) | |||
{ | |||
m_bFirstRelease = true; | |||
keysPressed += pEvent->key(); | |||
} | |||
void Widget::keyReleaseEvent(QKeyEvent *pEvent) | |||
{ | |||
if(m_bFirstRelease) | |||
{ | |||
processMultiKeys(keysPressed); | |||
} | |||
m_bFirstRelease = false; | |||
keysPressed -= pEvent->key(); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2021年3月29日 (月) 14:34時点における版
概要
キーボード入力
フォーカスを持つオブジェクトに破棄されたイベントは、keyPressEventメソッドで受け取れない。
イベント一括処理で破棄されたイベントは受け取れない。
// Mainwindow.h
// ...略
protected:
void keyPressEvent(QKeyEvent *pEvent);
// Mainwindow.cpp
// 押下したキー名をデバッグ出力する
// その他のキーは、16進数を出力する
void MainWindow::keyPressEvent(QKeyEvent *pEvent)
{
switch (pEvent->key())
{
case Qt::Key_Escape:
qDebug() << "Esc keyPress";
break;
case Qt::Key_Return:
qDebug() << "Return keyPress";
break;
case Qt::Key_Enter:
qDebug() << "Enter(keypad) keyPress";
break;
case Qt::Key_Home:
qDebug() << "Home keyPress";
break;
case Qt::Key_Left:
qDebug() << "Left keyPress";
break;
case Qt::Key_Down:
qDebug() << "Down keyPress";
break;
case Qt::Key_Space:
qDebug() << "Space keyPress";
break;
case Qt::Key_F1:
qDebug() << "F1 keyPress";
break;
case Qt::Key_0:
qDebug() << "0(keypad) keyPress";
break;
default:
qDebug("keyPress %x", pEvent->key());
break;
}
}
複数のキーの取得
1つのキーボードイベントで、複数のキーを取得する。
QSet<Qt::Key> keysPressed;
void Widget::keyPressEvent(QKeyEvent *pEvent)
{
m_bFirstRelease = true;
keysPressed += pEvent->key();
}
void Widget::keyReleaseEvent(QKeyEvent *pEvent)
{
if(m_bFirstRelease)
{
processMultiKeys(keysPressed);
}
m_bFirstRelease = false;
keysPressed -= pEvent->key();
}