Qt 是否在QColumnView中隐藏预览小部件?
我想隐藏显示为最后一列的预览小部件,即使它没有子项。我在互联网上到处寻找,无数用户不希望预览小部件一直被添加为最后一列Qt 是否在QColumnView中隐藏预览小部件?,qt,pyqt,qt5,Qt,Pyqt,Qt5,我想隐藏显示为最后一列的预览小部件,即使它没有子项。我在互联网上到处寻找,无数用户不希望预览小部件一直被添加为最后一列 更可悲的是,(从2010年开始)到现在还没有解决方案。有没有办法摆脱这种恼人的行为?如果不是,Qt开发人员是否至少应该在Qt5中提供此选项?如果我错过了什么,请告诉我 注意:我尝试了可能的建议解决方案,但没有一个有效 将列宽设置为0-失败 createColumn返回False-显示预览小部件时根本不调用createColumn 没有办法做到这一点。在qcolu
- 将列宽设置为0-失败
- createColumn返回False-显示预览小部件时根本不调用createColumn
- 没有办法做到这一点。在
qcolumnview.cpp
中的QColumnViewPrivate::createColumn()
中,您有(注释是我的):
如果您想更改QColumnView的行为,使预览小部件不总是显示出来,您必须自己在Qt代码中修复它并推送到Qt git repo,或者在Qt中创建一个建议,等待好的人来修复它。或者编写自己的列视图类,该类具有您想要的行为。
if (model->hasChildren(index)) { // Create column when there are children to display
view = q->createColumn(index);
q->connect(view, SIGNAL(clicked(QModelIndex)),
q, SLOT(_q_clicked(QModelIndex)));
} else { // Create column when there are no more children => the column will show the preview widget
if (!previewColumn)
setPreviewWidget(new QWidget(q)); // Indirectly create previewColumn
view = previewColumn;
view->setMinimumWidth(qMax(view->minimumWidth(), previewWidget->minimumWidth()));
}