0

私は使用していますQTreeView::resizeColumnToContents(int column)

でもその後も同じようなことをしていたら

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

動作しません。最大幅を設定するにはどうすればよいですか?

4

1 に答える 1

0

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

これに関するいくつかの詳細情報があればいいでしょう。

于 2016-11-14T11:46:02.687 に答える