gpt4 book ai didi

c++ - QTableView clearSelection 失败,出现 ASSERT : "!isEmpty()" in file/usr/include/qt4/QtCore/qlist. h,第 282 行

转载 作者:行者123 更新时间:2023-11-30 02:50:34 24 4
gpt4 key购买 nike

我有这门课:

class MyWidget : public QWidget {
Q_OBJECT
public:
...
public slot:
void select( const QItemSelection& selected, const QItemSelection& deselected);
private:
QTableView* view;
MyModelClass* model;
}

在我的构造函数中:

view->setEditTriggers( QAbstractItemView::NoEditTriggers );
view->setSelectionMode( QAbstractItemView::SelectionMode::SingleSelection );
view->setSelectionBehavior( QAbstractItemView::SelectionBehavior::SelectRows );
connect( view->selectionModel( ), SIGNAL( selectionChanged ( const QItemSelection&, const QItemSelection& ) ), this, SLOT( select( const QItemSelection&, const QItemSelection& ) ) );
// and few other things

在我的插槽实现中:

void MyWidget::select( const QItemSelection& selected, const QItemSelection& deselected ) {
//... doing few things
// at the end:
view->clearSelection();
// tried view->selectionModel()->clear() and view->selectionModel()->clearSelection() too
// but got the same result
}

它编译得很好,但是当我运行并进行选择时,它在最后崩溃并显示以下错误消息:

ASSERT: "!isEmpty()" in file /usr/include/qt4/QtCore/qlist.h, line 282

我也尝试了其他技巧:重新实现 showEvent 方法并从该上下文调用 clearSelection,但没有帮助:(

我的 Qt 版本是 4.8.1。你能帮忙的话,我会很高兴。提前致谢。

最佳答案

好吧……这是一个非常愚蠢的错误。正如 vahancho 所说,这意味着递归调用。我必须在我的选择函数中添加一行以跳过第二个(递归)调用。

if( selected.indexes( ).empty( ) ) return;

这是我的大错,但也许对其他人也有帮助。

关于c++ - QTableView clearSelection 失败,出现 ASSERT : "!isEmpty()" in file/usr/include/qt4/QtCore/qlist. h,第 282 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20353054/

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