我正在使用Qt tableWidget来显示包含列的项目列表。但是,此列表中的项目之间存在巨大的空间。
如何更改间距以使项目(仅文本)更加接近?
屏幕截图示例:
答案 0 :(得分:0)
最简单的方法可能是隐藏网格并用您需要的大小重新绘制它。为此,您必须创建自己的类,该类继承QTableWidget并定义自定义paintEvent。示例代码:
void paintEvent(QPaintEvent *event)
{
QTableWidget::paintEvent(event);
QPainter painter(viewport());
for (int i = 0; i < columnCount(); ++i)
{
int start = horizontalHeader()->sectionViewportPosition(i);
QPoint from = QPoint(start, 0);
QPoint to = QPoint(start, height());
painter.drawLine(from, to);
start += horizontalHeader()->sectionSize(i) - 10;
from = QPoint(start, 0);
to = QPoint(start, height());
painter.drawLine(from, to);
}
for (int j = 0; j < rowCount(); ++j)
{
int start = verticalHeader()->sectionViewportPosition(j);
QPoint from = QPoint(0, start);
QPoint to = QPoint(width(), start);
painter.drawLine(from, to);
start += verticalHeader()->sectionSize(j) - 10;
from = QPoint(0, start);
to = QPoint(width(), start);
painter.drawLine(from, to);
}
}
答案 1 :(得分:0)
我会尝试利用
void QTableView :: resizeRowToContents(int row)[slot]
根据用于呈现行中每个项目的委托的大小提示调整给定行的大小。
默认情况下,它的行为与我的用例一样,根据可见的图像增长行,否则缩小以适应文本。
很抱歉,我没有探索使用渲染委托
实现更精细的实际尺寸控制