代码之家  ›  专栏  ›  技术社区  ›  Dirk is no longer here

qtablewidget:如何用更少的垂直间距填充来获得更紧密的线条?

  •  7
  • Dirk is no longer here  · 技术社区  · 14 年前

    这个 QTableWdiget 非常适合简单的网格显示。更改颜色、字体等很简单。

    然而,我并没有用更少的垂直空白来给网格一个“更紧密”的外观。我看到qt文档会讨论(例如 here 关于

    • 边缘
    • 边境
    • 衬垫

    关于小部件,但是当我设置这些小部件时,我只得到更改 围绕整个 网格小部件而不是内部。

    如何直接设置(使用样式表或硬编码选项)以使qtablewidget显示更紧密?

    4 回复  |  直到 7 年前
        1
  •  5
  •   Dirk is no longer here    14 年前

    获取“h”的代码可能不健全。这只是一个例子。复制并粘贴以下相当简单的代码。更改“setDefaultSectionSize()”中的值,重新编译并运行。你应该看到区别。将此值设置为10或50将产生可见结果。在上面的代码中,可能是qfontmetrics或qfont弄乱了一些东西。

    你可以用任何你想得到的高度,但字体大小是最有意义的。

    #include <QtGui>
    
    int main( int argc, char* argv[] )
    {
     QApplication app( argc, argv );
    
     QDialog* my_dialog  = new QDialog();
     QHBoxLayout* layout  = new QHBoxLayout();
     QTableWidget* my_table_widget = new QTableWidget( my_dialog );
    
     my_table_widget->setRowCount( 10 );
     my_table_widget->setColumnCount( 10 );
     my_table_widget->verticalHeader()->setDefaultSectionSize( 15 );
     layout->addWidget( my_table_widget );
     my_dialog->setLayout( layout );
     my_dialog->resize( 500, 200 );
     my_dialog->show();
    
     return app.exec();
    }
    

    编辑:我不知道如何在这里设置代码块的格式…请原谅我。:)

    编辑2 :我解决了这个问题,下面简单介绍 tighterTable.pro 文件 帮助前进。

    TEMPLATE = app
    TARGET =
    DEPENDPATH += .
    INCLUDEPATH += .
    
    SOURCES += tighterTable.cpp    # if that is the filename
    

    多谢一大帮人帮忙。顺便说一句:作为代码编辑只需要缩进四个空格,和/或点击格式化行中的小“101010”按钮。

        2
  •  5
  •   thkala jaxb    13 年前

    你要找的是一个非常愚蠢的解决方案,但它是有效的。您需要设置头部的defaultsectionsize()成员。通过VerticalHeader()和HorizontalHeader()访问。我从来没有真正设置列宽的w/this b/c,我的大多数项目都涉及到添加行,而不是列,我只是调用ResizeColumnsToContents或手动调整大小。然而,这些行令人讨厌。我通常使用qfontmetrics获取字体的高度,然后添加2。任何随后添加的行都应该有这个高度,并且Viola:看起来更紧。

    希望有帮助。

    编辑:

    未经测试的代码:

    QFontMetrics fm( my_font );
    int h = fm.height() + 2;
    my_table->verticalHeader()->setDefaultSectionSize( h );
    
        3
  •  3
  •   Kaleb Pederson    14 年前

    qtablewidget是一个方便的模型和视图。通常情况下, QAbstractItemModel 的data()方法提供 SizeHintRole 它用于告诉视图每个单元格的大小。

    因为您使用的是qtablewidget,所以我认为您不能对其内部模型返回的大小提示进行任何更改。即使是 Qt style sheet documentation 在那方面什么也没提到。

        4
  •  0
  •   sonichy    7 年前

    qTableWidget->VerticalHeader->setMinimumSectionSize()是正确的方法,可以在UI中设置。