如何更改Qtablewidget项的间距

时间:2014-01-06 10:36:41

标签: c++ qt qtablewidget

我正在使用Qt tableWidget来显示包含列的项目列表。但是,此列表中的项目之间存在巨大的空间。

如何更改间距以使项目(仅文本)更加接近?

屏幕截图示例:

enter image description here

2 个答案:

答案 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]

     

根据用于呈现行中每个项目的委托的大小提示调整给定行的大小。

默认情况下,它的行为与我的用例一样,根据可见的图像增长行,否则缩小以适应文本。

很抱歉,我没有探索使用渲染委托

实现更精细的实际尺寸控制