QLineEdit 上的 QCompleter 用于部分插入的文本
QCompleter on QLineEdit for parts of the inserted text
我做了一个 QLineEdit
用于阅读中缀数学表达式。运算符仅限于 +-*/
和括号。值可以是数字或表示数值的变量名。我想自动完成变量名。
问题是看似简单的 QComplete
仅适用于单个预定义 words/phrases。它们在其他词之间不起作用(正如您在修改表达式时可能期望的那样)。
我尝试阅读 Tree Model Completer,但由于我是在 Python 中编程,所以这对我帮助不大。有谁知道 python 中编码的简单树模型完成器示例?
阅读 ekhumoros 后 我决定为自定义完成器制作一个简短示例。
示例如下:
from PySide import QtGui
class CustomCompleter(QtGui.QCompleter):
def __init__(self):
super().__init__()
def splitPath(self, path):
if path.endswith('ha'):
self.setModel(QtGui.QStringListModel([path + 'llo']))
return [path]
app = QtGui.QApplication([])
e = QtGui.QLineEdit()
c = CustomCompleter()
e.setCompleter(c)
e.show()
app.exec_()
每次文本以 'ha' 结尾时,它建议以 'llo' 继续它。它看起来像:
所有工作都在 QCompleter
的 splitPath(path)
中完成,每次我更改编辑字段的文本时都会调用两次(?)。在对文本进行一些处理之后,应该使用包含一个或多个建议的简单字符串列表来设置新模型。似乎每次都必须重新设置模型。另见 QCompleter Custom Completion Rules。
这还不是完整的公式解析和变量名完成,但是朝着这个方向迈出了合理的一步。它只是解释了 QCompleter
如何用于该目标。总结一下:子类 QCompleter
并将所有自定义逻辑放入 splitpath()
.
我做了一个 QLineEdit
用于阅读中缀数学表达式。运算符仅限于 +-*/
和括号。值可以是数字或表示数值的变量名。我想自动完成变量名。
问题是看似简单的 QComplete
仅适用于单个预定义 words/phrases。它们在其他词之间不起作用(正如您在修改表达式时可能期望的那样)。
我尝试阅读 Tree Model Completer,但由于我是在 Python 中编程,所以这对我帮助不大。有谁知道 python 中编码的简单树模型完成器示例?
阅读 ekhumoros 后
示例如下:
from PySide import QtGui
class CustomCompleter(QtGui.QCompleter):
def __init__(self):
super().__init__()
def splitPath(self, path):
if path.endswith('ha'):
self.setModel(QtGui.QStringListModel([path + 'llo']))
return [path]
app = QtGui.QApplication([])
e = QtGui.QLineEdit()
c = CustomCompleter()
e.setCompleter(c)
e.show()
app.exec_()
每次文本以 'ha' 结尾时,它建议以 'llo' 继续它。它看起来像:
所有工作都在 QCompleter
的 splitPath(path)
中完成,每次我更改编辑字段的文本时都会调用两次(?)。在对文本进行一些处理之后,应该使用包含一个或多个建议的简单字符串列表来设置新模型。似乎每次都必须重新设置模型。另见 QCompleter Custom Completion Rules。
这还不是完整的公式解析和变量名完成,但是朝着这个方向迈出了合理的一步。它只是解释了 QCompleter
如何用于该目标。总结一下:子类 QCompleter
并将所有自定义逻辑放入 splitpath()
.