QDockWidget で単純な仮想キーボードを作成しています...
ウィジェットが QMainWindow にドッキングされると、選択されたウィジェット (qdoublespinbox など) が強調表示され、仮想キーボードをクリックすると clearFocus() が機能します...
QDockWidget がウィンドウの上に浮かんでいるときにボタンをクリックすると、clearFocus が機能せず、QMainWindow にフォーカスされたウィジェットが表示されません...
QDockWidget にフォーカスをまったく持たないようにするにはどうすればよいですか?
ありがとう :-)
これはコードです:
// class MyVirtualKeyboard : public QDockWidget
void MyVirtualKeyboard::sendKey(Qt::Key key, Qt::KeyboardModifier mod)
{
this->clearFocus();
QMainWindow *w = dynamic_cast<QMainWindow *>(this->parent());
if(w == NULL) return;
QWidget *widget = w->focusWidget();
QString repr = QKeySequence(key).toString();
QKeyEvent *pressEvent = new QKeyEvent(QEvent::KeyPress, key, mod, repr);
QKeyEvent *releaseEvent = new QKeyEvent(QEvent::KeyRelease, key, mod, repr);
qDebug("%s", pressEvent->text().toAscii().data());
MyApplication *app = MyApplication::myInstance();
app->postEvent(widget, pressEvent);
app->postEvent(widget, releaseEvent);
}
void MyVirtualKeyboard::on_BTN_1_clicked()
{
sendKey(Qt::Key_1);
}
...