C++ 如何更改Qt tableWidget项的间距

C++ 如何更改Qt tableWidget项的间距,c++,qt,qtablewidget,C++,Qt,Qtablewidget,我使用Qt tableWidget来显示带有列的项目列表。但是,此列表中的项目之间有巨大的空间 如何更改间距以使项目(仅文本)彼此更接近 示例屏幕截图: 最简单的方法可能是隐藏网格,然后根据需要的大小重新绘制网格。为此,您必须创建自己的类,该类继承QTableWidget并定义自定义paintEvent。示例代码: void paintEvent(QPaintEvent *event) { QTableWidget::paintEvent(event); QPainter pai

我使用Qt tableWidget来显示带有列的项目列表。但是,此列表中的项目之间有巨大的空间

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

示例屏幕截图:


最简单的方法可能是隐藏网格,然后根据需要的大小重新绘制网格。为此,您必须创建自己的类,该类继承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);
    }
}
void paintEvent(QPaintEvent*event)
{
QTableWidget::paintEvent(事件);
QPainter painter(viewport());
对于(int i=0;isectionViewportPosition(i);
QPoint from=QPoint(开始,0);
QPoint to=QPoint(起点,高度());
油漆工.抽绳(从,到);
开始+=水平收割台()->截面尺寸(i)-10;
from=QPoint(起点,0);
to=QPoint(起点,高度());
油漆工.抽绳(从,到);
}
对于(int j=0;jsectionViewportPosition(j);
QPoint from=QPoint(0,开始);
QPoint to=QPoint(宽度(),开始);
油漆工.抽绳(从,到);
开始+=垂直收割台()->截面尺寸(j)-10;
from=QPoint(0,开始);
to=QPoint(宽度(),起点);
油漆工.抽绳(从,到);
}
}
我会尝试利用

void QTableView::resizeRowToContents(int行)[插槽]

根据用于呈现行中每个项的代理的大小提示调整给定行的大小

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


很抱歉,我没有探讨使用渲染代理可以实现的实际大小的更精细控制

您还可以使用QHeaderView的属性自动设置此值。QHeaderView*header=tableView->verticalHeader();header->setResizeMode(QHeaderView::ResizeToContents);