gpt4 book ai didi

c++ - 信号 returnPressed() 和 editingFinished() 不适用于 QLineEdit

转载 作者:行者123 更新时间:2023-11-30 02:43:33 24 4
gpt4 key购买 nike

我正在使用 QLineEditeditingFinished() 信号来执行操作。文档说,当按下回车键或回车键或失去焦点时,将发出此信号。

它与 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com