Qt如何按比例分配QTableView的列宽并且充满整个控件?
1个回答
展开全部
由于Qt中的表格控件可以通过从QTableView或QTableWidget派生子类实现。
所以这里就可以利用表格的列宽和行高的设置来实现:
方法一:
1.调用表头的setSectionResizeMode()方法,代码如下:
m_tableView->horizontalHeader()->
setSectionResizeMode(QHeaderView::ResizeToContents);
2.参数QHeaderView::ResizeToContens说明:调整列宽以适应单元内容。也就是说:
当单元内的文本较长的时候,这种方法将会严重影响表格的阅读。
这种方法只适合端文本内容的使用。
此外,设置了这种缩放方式之后,表头就不能再被拉伸完全失去响应。
方法二:
1.QTableView类还有一个成员方法:setColumnWidth(),用来设置表格列宽的。但是注意对setColumnWidth()的调用都要放在setModel()之后。代码如下:
m_viewList
= new QTableView(this);m_viewList->setSelectionBehavior(QAbstractItemView::SelectRows);
m_viewList->setSelectionMode(QAbstractItemView::SingleSelection);
m_viewList->setSortingEnabled(false);m_viewList->verticalHeader()->hide();
m_viewList->setWordWrap(false);m_viewList->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
m_viewList->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
m_viewList->setShowGrid(false);m_viewList->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_viewList->horizontalHeader()->setHighlightSections(false);
m_viewList->setItemDelegate(new NoFocusDelegate());m_viewList->setModel(m_proxyModel);
m_viewList->setAlternatingRowColors(true); //
alternative colorsm_viewList->setFrameShape(QFrame::NoFrame); //
column widthm_viewList->setColumnWidth(0,
85);m_viewList->setColumnWidth(1,
180);m_viewList->setColumnWidth(2,
90);m_viewList->setColumnWidth(3,
80);m_viewList->setColumnWidth(4,
80);m_viewList->setColumnWidth(5,
30);m_viewList->setColumnWidth(6,
40);m_viewList->setColumnWidth(7,
120);m_viewList->setColumnWidth(8,
120);m_viewList->setColumnWidth(9,
120);
2.效果对比:
在Model设置好之前调用setColumnWidth()的效果:每一列的宽度都是一样,没有区别对待:
在Model设置好之后调用setColumnWidth()的效果:第一列的内容一般较长,所以更宽,其他列则更窄:
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |