代码之家  ›  专栏  ›  技术社区  ›  Alexandra Tupu

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

  •  0
  • Alexandra Tupu  · 技术社区  · 6 年前

    当两个关键帧之间的时间差大于100ms时,我尝试在两次编辑之间更改焦点。如果 keyPressed(..) 功能是每次输入一个键?

    1 回复  |  直到 6 年前
        1
  •  1
  •   thuga    6 年前

    我不会用 QTime 这取决于系统时钟。我会使用 QElapsedTimer QTimer

    示例 Q定时器 :

    #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"