Qt如何检查2个按键事件之间的时间戳差异



当 2 个键之间的时间差大于 100 毫秒时,我正在尝试在两次编辑之间更改焦点。如果每次输入键时都有keyPressed(..)功能,我如何记住最后一个键输入?

我不会为此使用QTime,因为它取决于系统时钟。我会使用QElapsedTimerQTimer.

QTimer示例:

#include <QtWidgets>
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr) : QWidget(parent)
    {
        setLayout(new QHBoxLayout);
        layout()->addWidget(&line_edit1);
        layout()->addWidget(&line_edit2);
        focus_timer.setInterval(100);
        focus_timer.setSingleShot(true);
        connect(&line_edit1, &QLineEdit::textEdited, &focus_timer, QOverload<>::of(&QTimer::start));
        connect(&line_edit2, &QLineEdit::textEdited, &focus_timer, QOverload<>::of(&QTimer::start));
        connect(&focus_timer, &QTimer::timeout, this, [&]
        {
            line_edit1.hasFocus() ? line_edit2.setFocus() : line_edit1.setFocus();
        });
    }
private:
    QLineEdit line_edit1;
    QLineEdit line_edit2;
    QTimer focus_timer;
};
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
#include "main.moc"

最新更新