2016-11-14 368 views
0

我使用QTreeView::resizeColumnToContents(int column)如何设置QTreeView的最大宽度resizeColumnToContents?

,但如果我做得一样

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

它不工作,我怎么能设置最大宽度甚至有后呢?

+1

您在这里设置最大列宽。这是打算? “(宽度 - >列宽度(0)<10){//...}wod_beaminiμmwidth。无论如何,您只需简单地设置最小宽度就可以设置最小宽度。无论如何,你可以简单地在header中设置minimumSectionSize:t-> header() - > setMinimumSectionSize(10);'会在没有条件表达式的情况下执行你正在查找的内容 – Lifeisabug

回答

2

这将是值得检查是否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 

一些详细信息,这将是很好。

相关问题