【问题标题】:Is there a way to automatically have the cursor be in a QLineEdit without having to select it first?有没有办法让光标自动位于 QLineEdit 中而无需先选择它?
【发布时间】:2021-07-12 15:20:50
【问题描述】:

因此,我目前正在 QTCreator 中制作一个项目,在该项目中我使用 RFID 扫描仪作为身份验证方式,并且使用我的扫描仪发送 RFID 就像通过键盘键入一样。现在我想做的是让 QLineEdit 抓取已经工作的 RFID,保存 RFID,然后再次清理空间。以上所有内容都已经适用于下面的代码。 现在我的问题是,有没有办法让光标已经在 QLineEdit 中,因此准备好接受 RFID,而无需我先选择 QLineEdit。我愿意更改我正在使用的小部件,只要我在按下回车按钮时有信号,因为这是芯片结束 RFID 的方式。

我尝试在显示光标后设置光标的位置,但没有选择 QLineEdit。我还使用 QTextEdit 寻找解决方案,但那里也没有结果,除了它甚至没有 returnPressed 信号。

一些附带信息,我正在使用 QTCreator 4.12 和 Qt 5.12.7,并且我在运行 openSUSE Leap 15.2 的虚拟机上,非常感谢我可以使用的任何帮助或不同的小部件。

QLineEdit *testLineEdit = new QLineEdit;

connect(testLineEdit, SIGNAL(returnPressed()), this, SLOT(scanTest()));

void MainWindow::scanTest(){
  QString RFID = testLineEdit->text();
  testLineEdit->clear();
} 

【问题讨论】:

  • 你有特殊的 .ui 文件吗?或者您只是在代码中创建所有 UI?
  • 我确实有一个额外的 .ui 文件,是的。
  • 您是否尝试为该小部件设置 Tab 键顺序,以便您的 QTextEdit 具有顺序 1?
  • 感谢您的帮助,Matai 将我带到了我需要的地方。无论如何,再次感谢。

标签: qt qlineedit


【解决方案1】:

因此,由于某种原因,Maitai 的答案对我不起作用,但它确实引导我找到了我在示例中需要的内容:

testLineEdit->grabKeyboard();

我知道这只是有效的,因为我只有这个扫描仪作为输入,只有一个输入字段,但我在这里不需要更多。

【讨论】:

    【解决方案2】:
    testLineEdit->setFocus(Qt::OtherFocusReason);
    

    https://doc.qt.io/qt-5/qwidget.html#setFocus

    【讨论】:

    • 感谢您的回答,但没有奏效。它所做的就是让我找到对我有用的答案,grabKeyboard。
    • 我明白了,对我来说,它在没有 grabKeyboard() 的情况下工作,但我也想到了这一点。对我来说,将焦点设置到 QLineEdit 就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多