QT QTreeWidget、QTableWidget、QTreeView等 自定义列宽

自定义这些类的列宽是通过设置header来实现的,几年前胡乱捣鼓实现过,最近又忘了,昨天搜索了一阵子,没找到方法,今天早上一搜到下面的帖子,为了再次出现浪费时间的情况,故本次特地记录一下,加深印象的同时,也希望能帮到有同样需求的同鞋~

下面两个参考,摘自:http://www.qtcn.org/bbs/read-htm-tid-34881.html,供参考

//参考①

header()->hide();
m_pHeaderView->setClickable(true);  //能够发射sectionClicked(int)信号,可做菜单,显示隐藏列:setSectionHidden(int, bool);isSectionHidden(int);
m_pHeaderView->setMovable(true);
m_pHeaderView->setResizeMode(0, QHeaderView::Fixed);  //固定列宽
m_pHeaderView->setDefaultSectionSize(100);  //默认

//参考②

注意:StretchLastSection 为true时,对最后一列的设置会失效。setSectionResizeMode也还有一个重载函数可以对所有列设置。
    m_guiTreeWidget->header()->setStretchLastSection(false);
    m_guiTreeWidget->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
    m_guiTreeWidget->header()->setSectionResizeMode(1, QHeaderView::Stretch);
    m_guiTreeWidget->header()->setSectionResizeMode(2, QHeaderView::Fixed);
    m_guiTreeWidget->setColumnWidth(2, 50);

 

我自己的代码是,类似于②,

    ui.treeWidget->header()->setStretchLastSection(false);
    ui.treeWidget->header()->setSectionResizeMode(0, QHeaderView::Fixed);
    ui.treeWidget->header()->setSectionResizeMode(1, QHeaderView::Stretch);
    ui.treeWidget->header()->setSectionResizeMode(3, QHeaderView::Fixed);
    //ui.treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);
    ui.treeWidget->setColumnWidth(0, 300);
    ui.treeWidget->setColumnWidth(2, 50);
    ui.treeWidget->hideColumn(2);
    ui.treeWidget->setColumnWidth(3, 300);

你可能感兴趣的:(QT)