gpt4 book ai didi

c++ - 以编程方式选择 QAbstractItemView 中的 QModelIndexes

转载 作者:行者123 更新时间:2023-11-30 02:27:16 25 4
gpt4 key购买 nike

我正在尝试在给定字符串值的情况下在 Qt 中选择抽象项目 View 的项目。我已经编写了根据字符串内容查找任何 QModelIndex 的函数。

我现在正尝试将我找到的所有那些 QModelIndexes 放入单个选择中。我的方法签名:

    // Will select all items that contain any of the strings
// given by 1st argument
virtual void selectItems(const QStringList&) override;

我的实现看起来像这样(但不能正常工作):

void QAbstractItemViewResult::selectItems(const QStringList& list)
{
if(list.size() > 0) {
QItemSelectionModel::SelectionFlags flags = QItemSelectionModel::ClearAndSelect;
QItemSelection selection;
Q_FOREACH(const QString text, list) {
// Find index by string is a method I implemented earlier
// The method works correctly
QModelIndex index(findIndexByString(targetView_, list[0]));
if(index.isValid()) {
// This is an attempt to add model indx into selection
selection.select(index, index);
}
}
// When the selection is created, this should select it in index
targetView_->selectionModel()->select(selection, flags);
}
}

问题是,这段代码总是只选择列表中的第一项,例如。对于 "B1","C1","A1" 它看起来像这样:

image description

表格启用了多选:

image description

那么我该如何以编程方式正确地选择多个项目呢?如果您需要 findIndexByString,可以在这里找到:https://github.com/Darker/qt-gui-test/blob/master/results/QAbstractItemViewResult.cpp#L5

最佳答案

您在每次迭代时清除选择。

替换:

QItemSelectionModel::SelectionFlags flags = QItemSelectionModel::ClearAndSelect;

作者:

QItemSelectionModel::SelectionFlags flags = QItemSelectionModel::Select;

编辑:您传递 list[0] 而不是 text:

findIndexByString(targetView_, list[0])

顺便说一下,你应该在你的循环中使用一个常量引用:

Q_FOREACH(const QString &text, list) {

如果您使用 C++11 或更高版本,则为 native 版本:

for (const QSring &text : list) {

关于c++ - 以编程方式选择 QAbstractItemView 中的 QModelIndexes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com