【问题标题】:Hide preview widget in QColumnView?在 QColumnView 中隐藏预览小部件?
【发布时间】:2017-02-23 06:40:57
【问题描述】:

我想隐藏显示为最后一列的预览小部件,即使它没有子级也是如此。我在互联网上到处查看,无数用户不希望将预览小部件一直添加为最后一列。

这里更可悲的是,直到现在[从 2010 年开始] 还没有提供解决方案。有什么办法可以摆脱这种烦人的行为吗?如果没有,Qt 开发人员不应该至少在 Qt5 中提供这个选项吗?如果我在这里遗漏了什么,请告诉我。

注意:我已经尝试了可能建议的解决方案,但都没有奏效

  • 将列宽设置为 0 - 失败
  • 为 createColumn 返回 False - 显示预览小部件时根本不会调用 createColumn

【问题讨论】:

    标签: qt pyqt qt5


    【解决方案1】:

    没有办法做到这一点。在qcolumnview.cppQColumnViewPrivate::createColumn() 中,你有(cmets 是我的):

     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()));
    }
    

    如果您想更改 QColumnView 的行为,以便它不总是显示预览小部件,您必须通过自己在 Qt 代码中修复它并推送到 Qt git repo 来做出贡献,或者在 Qt bug tracker 中创建建议并等待好心人来修复它。

    【讨论】:

    • 或者编写您自己的列视图类,该类具有您想要的行为。
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多