- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
QCompleter
在大型数据集(大型模型)上运行速度稍慢:当我开始在 QCombobox
中输入字符时,它会花费几秒钟的时间来显示带有变体的自动完成弹出窗口,当输入第二个字符时,QCompleter
也不会在几秒钟内对按键使用react。接下来的角色效果很好。模型大小约为 100K 条记录。是否可以提高 QCompleter 性能或在第二个或第三个输入符号后显示弹出窗口?有一些好的例子吗?
最佳答案
解决方案类似于:https://stackoverflow.com/a/33404207/630169因为 QCompleter
也在其 popup()
中使用 QListView
。因此,加速 QCombobox 的完整解决方案是:
void ComboboxTools::tweak(QComboBox *combo)
{
// For performance reasons use this policy on large models
// or AdjustToMinimumContentsLengthWithIcon
combo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
// Improve combobox view performance
tweak((QListView *)combo->view());
// Improve combobox completer performance
tweak(combo->completer());
}
void ComboboxTools::tweak(QListView *view)
{
// Improving Performance: It is possible to give the view hints
// about the data it is handling in order to improve its performance
// when displaying large numbers of items. One approach that can be taken
// for views that are intended to display items with equal sizes
// is to set the uniformItemSizes property to true.
view->setUniformItemSizes(true);
// This property holds the layout mode for the items. When the mode is Batched,
// the items are laid out in batches of batchSize items, while processing events.
// This makes it possible to instantly view and interact with the visible items
// while the rest are being laid out.
view->setLayoutMode(QListView::Batched);
// batchSize : int
// This property holds the number of items laid out in each batch
// if layoutMode is set to Batched. The default value is 100.
// view->setBatchSize(100);
}
void ComboboxTools::tweak(QCompleter *completer)
{
completer->setCaseSensitivity(Qt::CaseInsensitive);
// If the model's data for the completionColumn() and completionRole() is sorted
// in ascending order, you can set ModelSorting property
// to CaseSensitivelySortedModel or CaseInsensitivelySortedModel.
// On large models, this can lead to significant performance improvements
// because the completer object can then use a binary search algorithm
// instead of linear search algorithm.
completer->setModelSorting(QCompleter::CaseSensitivelySortedModel);
// Improve completer popup (view) performance
tweak((QListView *)completer->popup());
}
关于qt - 适用于大型模型的 QCompleter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447843/
我有一个 QLineEdit,它有一个 QCompleter 对象。如果用户至少输入了一个字符,则会显示 QCompleter 的弹出菜单,但是当用户删除最后一个字符(从而使该字段留空)时,弹出菜单就
我正在使用 Qt4.6,并且我有一个带有 QCompleter 的 QComboBox。 通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联 - 这是我的用法)。例如,给定 chic
我试图让 QCompleter 匹配几个用逗号分隔的等效选项。似乎没有简单的方法可以做到这一点,但有一行 QCompleter 引用引起了我的注意,它描述了函数 QCompleter::splitPa
我有表窗口小部件,其中一列需要具有文本自动填充功能。 每次用户请求新行时,我都会为该列运行以下代码: else if (i == COLUMN_DESCRIPICION){ Q
QCompleter 在大型数据集(大型模型)上运行速度稍慢:当我开始在 QCombobox 中输入字符时,它会花费几秒钟的时间来显示带有变体的自动完成弹出窗口,当输入第二个字符时,QComplete
我使用的是 Qt4.6,并且我有一个 QComboBox,里面有一个 QCompleter。 通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联中 - 这是我的用法)。例如,给定 c
它没有显示任何弹出窗口或错误。它静静地什么都不做。 QStringList dictionary; dictionary inRawText); completer->setModel(new QSt
我对 Qt 很陌生。我试图在这里找到答案,但到目前为止没有成功。我在 main.cpp 文件中有一个复杂结构的 vector ,我想将它用作我在 mainwindow.cpp 的 void 函数中定义
我想做一个代码完成器,所以我将 QCompleter 子类化: http://hastebin.com/qeyumevisa.cpp 但是,当我尝试运行这段代码时,出现运行时错误: 调试输出显示: A
需要一些帮助。我有一个 QCompleter 和一些 QStringList,例如: QstringList list; list #include #include #include #in
我正在使用 Qt4.6,并且我有一个带有 QCompleter 的 QComboBox。 通常的功能是根据前缀提供完成提示(这些提示可以在下拉列表中而不是内联 - 这是我的用法)。例如,给定 chic
我有一个表,其中包含一些使用非常大的数字作为主键的键控记录。我有类似于下面的代码,它使用 QCompleter 自动完成此表中的查找。它有效,但显示的补全是使用科学记数法 (1234567 => 1.
有人问过关于覆盖 QCompleter 弹出位置的类似问题,但我仍然找不到有效的解决方案。我只是想将弹出窗口向下移动 5px 左右(我有一些特定的样式要求) 我尝试将 QListView 子类化并使用
我刚刚开始使用 PyQt5,这里有一个小文件: class Window(QWidget): def __init__(self): QWidget.__init__(self
我创建了一个自定义 QCompleter 类,它在弹出窗口中显示所有项目,其中包含 QLineEdit 的键入词。 现在所有项目都按字母顺序排列,如您在此处所见: 如果我输入“dab”然后按字母顺序输
我正在对 QCompleter 进行子类化,以赋予它一些特殊功能。我希望在模型中只有一个具有给定前缀的完成时触发 activated(),但这不是我遇到问题的地方。 我在我的子类中创建了一个虚拟 se
我已经用 QStringList 初始化了 QCompleter。而这个字符串列表有超过 30,000 个条目。我已在我的用户界面中连接到 Qlineedit。那里没有问题。问题在于,每当我在该 ql
在网上搜索了很多都没有找到正确的答案之后,我向你们寻求帮助...所以让我们看看我是否可以解释一下。 我正在使用 Qt 5 开发 UI,我想要一个具有自动完成功能的 lineEdit。我知道我可以使用
我都是,我只是效仿这个很好的例子: http://qt-project.org/doc/qt-4.8/tools-customcompleter.html 除了使用 modelFromFile 方法进
我想研究如何制作一个小的用户界面,用户可以在其中键入一些字母并根据给定的数据源(此处列出)获得一些建议,从而使搜索更容易。为此,我使用 Qt 的 QCompleter类。 在匹配元素中,键入的字母应使
我是一名优秀的程序员,十分优秀!