【问题标题】:How to set max width for QTreeView resizeColumnToContents?如何为 QTreeView resizeColumnToContents 设置最大宽度?
【发布时间】:2016-11-14 10:53:52
【问题描述】:

我正在使用QTreeView::resizeColumnToContents(int column)

但即使在那之后我也在做类似的事情

  if (t->columnWidth(0) > 10) {
    t->setColumnWidth(0, 10);
  }

它不起作用,我该如何设置最大宽度?

【问题讨论】:

  • 您在此处设置最大列宽。这是故意的吗? ìf(t->columnWidth(0) header()->setMinimumSectionSize(10);` 会在没有条件表达式的情况下完成您正在寻找的事情

标签: c++ qt qt5 qtwidgets


【解决方案1】:

值得检查您的 if 语句 是否被执行,或者指针 t 是否能够修改对象。

我已经修改了 Qt 演示“simpletreemodel”来使用这个功能,它工作正常。我为此使用 Qt 5.7.0。

int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(simpletreemodel);

    QApplication app(argc, argv);

    QFile file(":/default.txt");
    file.open(QIODevice::ReadOnly);

    TreeModel model(file.readAll());
    file.close();

    QTreeView view;
    view.setModel(&model);
    view.setWindowTitle(QObject::tr("Simple Tree Model"));

    std::cout<< view.columnWidth(0) <<std::endl;
    if (view.columnWidth(0) <= 100)
    {
        std::cout<< "resizing column width >> ";
        view.resizeColumnToContents(0);
        std::cout<< view.columnWidth(0) <<std::endl;

        if (view.columnWidth(0) > 250)
        {
            std::cout<< "oops! This is too much.. (max width = 250)" <<std::endl;
            view.setColumnWidth(0,250);
        }
    }
    std::cout<< view.columnWidth(0) <<std::endl;

    view.show();
    return app.exec();
}

上面的输出是:

100
resizing column width >> 269
oops! This is too much.. (max width = 250)
250

更多关于这方面的信息会很好。

【讨论】:

    猜你喜欢
    • 2014-05-28
    • 1970-01-01
    • 2011-04-11
    • 2012-01-11
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    相关资源
    最近更新 更多