我有这堂课:
class MyWidget : public QWidget {
Q_OBJECT
public:
...
public slot:
void select( const QItemSelection& selected, const QItemSelection& deselected);
private:
QTableView* view;
MyModelClass* model;
}
在我的 cunstructor 中:
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
}
它编译得恰到好处,但是当我运行并进行选择时,它最后会崩溃并显示以下错误消息:
断言:文件 /usr/include/qt4/QtCore/qlist.h 中的“!isEmpty()”,第 282 行
我也尝试了其他技巧:重新实现 showEvent 方法并从该上下文中调用 clearSelection,但没有帮助:(
我的 Qt 版本是 4.8.1。你能帮忙的话,我会很高兴。提前致谢。