ダイアログでtabキーを押すと、フォーカスが別のウィジェットに変わります。Qt では、ウィジェットがフォーカスを失ったときのシグナルはありますか? 入力が有効かどうかを確認するために使用できますか? そうでない場合、フォーカスを戻して、ユーザーに再入力を求めることはできますか?
質問する
34239 次
2 に答える
11
自分でシグナルを作成することも可能です (そして簡単です)。
.cpp 内 (moc を含めることを忘れないでください)
class FocusWatcher : public QObject
{
Q_OBJECT
public:
explicit FocusWatcher(QObject* parent = nullptr) : QObject(parent)
{
if (parent)
parent->installEventFilter(this);
}
virtual bool eventFilter(QObject *obj, QEvent *event) override
{
Q_UNUSED(obj)
if (event->type() == QEvent::FocusIn)
emit focusChanged(true);
else if (event->type() == QEvent::FocusOut)
emit focusChanged(false);
return false;
}
Q_SIGNALS:
void focusChanged(bool in);
};
そしてそれを接続するには:
connect(new FocusWatcher(myWidget), &FocusWatcher::focusChanged, this, &View::doSomething);
于 2015-12-12T09:06:58.377 に答える