- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在四处寻找这个问题的解决方案,我开始相信这可能是 Qt 函数本身的一个错误。问题是,在您调用 QItemSelectionModel::selectedIndexes() 之后,当程序试图破坏此函数返回的 QModelIndexList 时,程序将崩溃。在崩溃之前,您会收到以下调试消息:
Debug Assertion Failed!
(…)
File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c
Line:1419
Expression: _pFirstBlock == pHead
(…)
下面是最简单的会导致问题的代码,大家可以自行测试:
#include <QApplication>
#include <QStringList>
#include <QStringListModel>
#include <QItemSelectionModel>
#include <QModelIndex>
#include <QModelIndexList>
#include <QListView>
#include <QItemSelectionModel>
void doSomethingWithSelection(QItemSelectionModel* selectionmodel);
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStringList list;
list.push_back("1");
list.push_back("2");
list.push_back("3");
list.push_back("4");
QStringListModel model(list);
QListView view;
view.setModel(&model);
view.setSelectionMode(QAbstractItemView::ExtendedSelection);
QItemSelectionModel *selectionmodel = view.selectionModel();
QModelIndex first = model.index(0);
QModelIndex last = model.index(2);
QItemSelection selection(first, last);
selectionmodel->select(selection,QItemSelectionModel::Select);
doSomethingWithSelection(selectionmodel);
view.show();
return a.exec();
}
void doSomethingWithSelection(QItemSelectionModel* selectionmodel)
{
QModelIndexList indexlist = selectionmodel->selectedIndexes();
// this is what causes the error. I put this inside a function
// so the error will happen when exiting the function,
// when the program try to destroy the list nodes.
}
最佳答案
我有完全相同的问题,只是我使用的是选定的行而不是选定的索引。当 QModelIndexList 中的内部 QList 尝试从堆中删除索引时,我将其缩小为函数退出。不确定如何修复它,但我阅读了这篇有趣的帖子 here并想出了这个功能:
QModelIndexList Class::getViewSelection(QAbstractItemView *view , int columnNumber) const
{
QModelIndexList list;
for (int row = 0; row < view->model()->rowCount(view->rootIndex()); ++row)
{
QModelIndex index = view->model()->index(row, columnNumber, view->rootIndex());
if (view->selectionModel()->isSelected(index))
list.push_back(index);
}
return list;
}
我编写此函数是为了获取选定的行,因此列参数是您想要索引的列。
关于c++ - QItemSelectionModel::selectedIndexes() 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15123109/
我在尝试这段代码时遇到了上述错误。我试着给 just my code但没有用。 (这是默认的) Here is my XML file 错误在 cmbProduct_SelectedIndexChan
我遇到了一个问题,即我的组合框在关闭 UserControl 时丢失了其 SelectedIndex 值。 ViewModel 仍然有它,但 View 不断将它重置为 -1。我了解绑定(bind) I
我一直收到这个错误: System.NullReferenceException was unhandled by user code Message=[Arg_NullReferenceExce
我有一个 HTML 选择下拉列表,其中提供了多个: Apple Orange Pineapple Banana 并分配一个单击处理程序,该处理程序返回当前单击的元素的索引: doc
如果没有选择任何内容,是否有可能让 selectedIndex 返回 -1,而不是位置 0 处的元素文本。 即使没有选择任何内容,selectedIndex 也会返回 0。 11 2
向代码杂耍者致敬! 我正在处理一个有点令人沮丧的问题,我似乎无法 100% 解决它,我希望它能正常工作。 我有一个选择字段,其中包含各种动态选项数量(可能不止一个“中间”,例如“中间 1”、“中间 2
是否可以内联使用 selectedIndex 属性而不是将其放在 javascript 标记中? 如果我有一个内联的 onChange,例如: ^这不起作用,但更多的是我正在寻找的例子。这种用法可能
{{spot}} setPlace(seat) { this.selectedIndex = seat; } 我有二维数组,我想将类添加到所选
如何设置以显示文本为引用的select元素的selectedIndex? 例子: Chicken Crocodile Monkey function Sele
我有一个带有显示数据的组合框的 WPF 用户控件 (FileSelectionView.xaml)。我的 WPF 看起来像: 在我的 View 模型文件 (FileSelectionViewMode
我有我想做的独特行为。 我有一个组合框,它数据绑定(bind)到 View 模型项列表。第一项是“[选择项目]”。预期的行为是,当用户选择一个项目时,我会做一些事情,然后将索引重置回第一个项目。 这有
Command 参数如何绑定(bind)到 ListBox 中的选定索引?我的代码:
我有一个比较经典的UI情况-两个名为SelectedItems和AvailableItems的列表框-想法是您已经选择的项目位于SelectedItems中,而可用于添加到SelectedItems的
我正在尝试将下拉选项的默认选择设置为空白。 如果我用 HTML 生成一个选择下拉列表,它就可以工作。但是,当我使用 JavaScript 生成相同的下拉列表时,它不起作用。 请参阅 http://js
我的函数SelectBeatle检查input#FindBeatle并将select#Beatles的selectedIndex设置为值输入#FindBeatle 然而,由于某些奇怪的原因,我的循环似
我使用 Symfony Twig 模板在我的输入中有一个标签列表: {% for skill in skills %} {{skill.label}} {%
我有一个问题,不知道如何解决,在 Excel VBA 中,我有这段代码可以带我浏览网站 ( https://indexcalculator.ftserussell.com/ ),但是在网站的第 3 步
很难理解这个概念。如果您单击 WPF DataGrid 上的一行,它会使用 SystemColors.HighlightBrushKey 着色并具有“焦点”。 如果您选择另一个控件,该行不再有 Sys
我在“UITabBarController.selectedIndex”上发生崩溃。令人惊讶的是,选项卡栏在执行的任何时候都不会为零,并且在该特定行上仍然会出现错误。请指导我找到正确的解决方案。
$.fn.fillSelect = function (data) { return this.clearSelect().each(function () { if (thi
我是一名优秀的程序员,十分优秀!