Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 是否在QColumnView中隐藏预览小部件?_Qt_Pyqt_Qt5 - Fatal编程技术网

Qt 是否在QColumnView中隐藏预览小部件?

Qt 是否在QColumnView中隐藏预览小部件?,qt,pyqt,qt5,Qt,Pyqt,Qt5,我想隐藏显示为最后一列的预览小部件,即使它没有子项。我在互联网上到处寻找,无数用户不希望预览小部件一直被添加为最后一列 更可悲的是,(从2010年开始)到现在还没有解决方案。有没有办法摆脱这种恼人的行为?如果不是,Qt开发人员是否至少应该在Qt5中提供此选项?如果我错过了什么,请告诉我 注意:我尝试了可能的建议解决方案,但没有一个有效 将列宽设置为0-失败 createColumn返回False-显示预览小部件时根本不调用createColumn 没有办法做到这一点。在qcolu

我想隐藏显示为最后一列的预览小部件,即使它没有子项。我在互联网上到处寻找,无数用户不希望预览小部件一直被添加为最后一列

更可悲的是,(从2010年开始)到现在还没有解决方案。有没有办法摆脱这种恼人的行为?如果不是,Qt开发人员是否至少应该在Qt5中提供此选项?如果我错过了什么,请告诉我

注意:我尝试了可能的建议解决方案,但没有一个有效

  • 将列宽设置为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()));
      }