【问题标题】:Custom QCompleter strange behavior自定义 QCompleter 奇怪的行为
【发布时间】:2012-07-01 11:20:15
【问题描述】:

我都是,我只是按照这个很好的例子:
http://qt-project.org/doc/qt-4.8/tools-customcompleter.html
我完全复制了代码,除了对 modelFromFile 方法的一些更改,就是这样:

QAbstractItemModel *MainWindow::modelFromFile(const QString& fileName)
 {
     QStringList words;
     words
     << "break"
     << "default"
     << "func"
     << "interface"
     << "select"
     << "case"
     << "defer"
     << "go"
     << "map"
     << "struct"
     << "chan"
     << "else"
     << "goto"
     << "package"
     << "switch"
     << "const"
     << "fallthrough"
     << "if"
     << "range"
     << "type"
     << "continue"
     << "for"
     << "import"
     << "return"
     << "var";
     return new QStringListModel(words, completer);
 }

奇怪的是,当我输入“fal”时,我正在等待“fallthrough”弹出,但我什么也没看到。它可以与“break”和一些但不是所有的词一起使用。
我正在使用 Kubuntu 12.04,而我的 Ubuntu 12.04 合作伙伴出现了这种行为。
Qt Creator 2.4.1
基于Qt 4.8.0(32位)

【问题讨论】:

  • 此时我唯一的建议是为您的 qt (4.8) 版本使用文档,而不是为即将到来的 5.0 使用文档。 QCompleter 可能存在不兼容的更改...
  • 用4.8版本测试一下,还是一样,有没有跟我一样的问题?
  • 只是猜测:也许,对列表进行排序?..
  • 可能是这种奇怪的行为来自未排序的字符串列表,请使用已排序的字符串列表进行检查。
  • 哦,是的!它适用于排序列表!

标签: c++ qt qcompleter


【解决方案1】:

当参数中给出的列表是排序列表时,QStringListModel 能够完成单词。您的列表未排序,因此它有权不工作:)

【讨论】:

  • 假设如果我有 3 个排序列表,我可以在不合并的情况下将列表与完成器一起使用并重新排序吗?
  • 你必须合并和排序它们,因为 QCOmpleter 会为每个列表找到单词,所以你会得到三个单词而不是一个。
猜你喜欢
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多