qtableview设置列宽度_Qt如何按比例分配QTableView的列宽并且充满整个控件?

本文介绍了如何在Qt中设置QTableView的列宽,包括使用`setSectionResizeMode(QHeaderView::ResizeToContents)`和`setColumnWidth()`方法。前者自动调整列宽以适应内容,后者允许手动设定每列宽度。需要注意的是,`setColumnWidth()`应在设置Model之后调用,以确保列宽正确应用。示例代码展示了如何为不同列设置不同的宽度,以达到理想的显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展开全部

由于Qt中的表格控件可以通过从QTableView或QTableWidget派生子类实现。

所以这里就可以利用表格的列宽和行62616964757a686964616fe58685e5aeb931333365633864高的设置来实现:

方法一:

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()的效果:第一列的内容一般较长,所以更宽,其他列则更窄:

根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。

具体步骤如下:/导致这种情况的原因主要是……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值