通过按 Enter 完成编辑时更改或清除 QLineEdit 上的焦点,并在 Qt 中仅发送一个信号
Change or clear focus on QLineEdit when done editing by pressing Enter and only send one signal in Qt
我想创建一种行为,在这种行为中,当我完成文本编辑时,焦点要么移动到下一个子项,要么在我按"Enter"时清除当前字段上的焦点。然后我会得到一个信号来触发代码的一部分。
当我使用 focusNextChild() 或 clearFocus() 为 "Enter"重新实现 keyReleaseEvent() 时,我得到两个文本编辑信号,一个是按下"Enter",另一个是通过 focusNextChild() 或 clearFocus() 更改焦点时。 额外的信号是不可取的。
如果我使用 focusNextChild() 或 clearFocus() 为 "Enter" 重新实现 keyReleaseEvent(),它只会创建一个信号,但我也希望在用户通过 tab() 退出 lineEdit 或鼠标单击任何其他行项目时创建信号,如果我使用 returnPressed() 则不会如此
理想情况下,当 lineEdit 失去焦点时,我可以使用信号,它连接到运行代码的插槽,我可以重新实现 keyReleaseEvent() for "Enter" 来设置焦点,但似乎 Qt 中不存在这样的信号。
有没有人对如何实施这一点或更好的方法提出建议?
您可以根据需要连接/断开信号。例如,当您在QLineEdit中聚焦时,您可以将列出的两个信号连接到插槽,这将断开这两个连接并将焦点移动到下一个子项。因此,您将只处理一个信号。
另一种解决方案 - 您可以在插槽的开头调用QLineEdit.blockSignals(true),并在插槽的末尾调用QLineEdit.blockSignals(false)。在这种情况下,无论您在插槽中做什么,您都不会在QLineEdit中触发任何信号,也不会产生重复。
- 如何访问Qt::D isplayRole并在TableView中指定列
- gdborig.exe 在调试 QT 5.8 并在窗口中打开 QFileDialog 时随机崩溃
- Qt C++下载XML文件并在textEdit中显示
- 如何将所选行的第一列值绑定到变量并在 QT 的 SQL 命令中使用它?
- 使用QuaZip提取.cbz并在Qt中创建QImages
- Qt表查看单元格中的显示图像并在单击时获取路径
- 从QT C 返回自定义对象,并在QML中打印属性
- 如何在滚动区域中动态插入项目并在QT中加载滚动条
- 在QT中创建我自己的异常并在函数中抛出异常
- 从Qt中的对话框获取数据并在Ui中使用
- QT/C++,OS X:退出应用程序时可选择隐藏(),以便应用程序继续运行,并在单击dock中的图标后再次显示
- 使用macports安装opencv,并在qt(osx)中使用
- QT 排序模型并在表视图中显示
- 通过按 Enter 完成编辑时更改或清除 QLineEdit 上的焦点,并在 Qt 中仅发送一个信号
- Qt/C++ 在远程机器上执行命令并与其提示符交互
- 在Qt中构建DLL并在Visual Studio+Delphi中使用
- 如何从数据库(postgre)获取最后一个值并在Qt中显示它
- Qt如何使用带有QColor的RGB颜色创建QBrush,并在以后进行更改
- 如何使Qt QMainWindow在有窗口覆盖的情况下用鼠标点击时处于焦点并覆盖
- 如何在MacOS X Sierra上安装Qt并在终端上添加qmake