我为阅读中缀数学表达式而做了一个QLineEdit
。运算符仅限于+-*/
和括号。值可以是数值,也可以是表示数值的变量名我想自动完成变量名。
问题是,显然simpleQComplete
只适用于单个预定义单词/短语。它们不会在其他词之间起作用(正如您在修改表达式时所期望的那样)。
我试着阅读树模型完成器,但是因为我是用python编程的,所以对我没有太大帮助。有人知道用python编写的一个简单的树模型完成器示例吗?
最佳答案
在阅读了ekhurvoscomment之后,我决定为一个定制的completer做一个简短的例子。
下面是一个例子:
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”继续例如,它看起来像:
所有的工作都是在
splitPath(path)
的QCompleter
中完成的,称为两次(?)每次我更改编辑字段的文本。在对文本进行一些处理之后,应该使用包含一个或多个建议的简单字符串列表来设置模型new。似乎每次都要重新设定模型。另请参见QCompleter Custom Completion Rules。这还不是完整的公式解析和变量名完成,而是朝这个方向迈出的合理一步。它只是解释了如何将
QCompleter
用于该目标。总结一下:子类QCompleter
并将所有自定义逻辑放入splitpath()
中。关于python - QLineEdit上的QCompleter用于部分插入的文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28068943/