自定义这些类的列宽是通过设置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);