我为阅读中缀数学表达式而做了一个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/

10-09 18:56