作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 QLineEdit
的 editingFinished()
信号来执行操作。文档说,当按下回车键或回车键或失去焦点时,将发出此信号。
它与 numlock(Windows
键盘)上的 enter 键
配合使用效果很好,而且当它失去焦点时,但当我按下键盘上的“返回键”时, 信号不发射。我尝试使用 returnPressed()
信号,它的行为方式相同。
我错过了什么吗?
谢谢
最佳答案
子类 QLineEdit
重新实现keyPressEvent()
捕捉 Qt::Key_Enter
按下并完成你的工作或自己发出信号
来自文档:
Qt::Key_Return 0x01000004
Qt::Key_Enter 0x01000005 Typically located on the keypad.
像这样:
void LineEdit::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Enter)
{
//do something
}
}
如果你不想要子类,你可以installEventFilter
到你的对话窗口,捕捉你的lineEdit并检查是否按下了Qt::Key_Enter
。
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == ui->lineEdit && event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
if(Qt::Key_Enter == keyEvent->key() )
{
qDebug() << "numpad Enter pressed";
}
}
}
不要忘记
protected:
bool eventFilter(QObject *obj, QEvent *event);//in header
和
qApp->installEventFilter(this);//in constructor
例如:
void MainWindow::on_lineEdit_returnPressed()
{
qDebug() << "numpad Enter pressed";
}
关于c++ - 信号 returnPressed() 和 editingFinished() 不适用于 QLineEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26041131/
我是一名优秀的程序员,十分优秀!