QTableWidget:如何通过较少的垂直间距填充来获得更紧凑的线条?

问题描述 投票:8回答:5

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

但是,我没有设法使用更少的垂直空白给网格一个“更紧凑”的外观。我看到Qt文档谈论(例如here

  • 余量
  • 边界
  • 填充

围绕小部件,但是当我设置这些时,我只能在整个网格小部件而不是内部进行更改。

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

qt qt4 qtablewidget
5个回答
5
投票

获得'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

多亏了这一大堆肥。 BTW:编辑为代码只是缩进四个空格,和/或在格式行中点击带有“101010”的按钮。


5
投票

你正在寻找的是一个非常愚蠢的解决方案恕我直言,但它的工作原理。您需要设置标头的defaultSectionSize()成员。通过verticalHeader()和horizo​​ntalHeader()访问。我从来没有真正设置列宽度w / this b / c我的大多数项目都涉及我添加行而不是列,我只是调用resizeColumnsToContents或手动调整大小。但是,行是令人厌烦的。我通常使用QFontMetrics获得字体的高度,并添加2.添加的任何后续行应该具有此高度,并且中提琴:更紧密的外观。

希望有所帮助。

编辑:

未经测试的代码:

QFontMetrics fm( my_font );
int h = fm.height() + 2;
my_table->verticalHeader()->setDefaultSectionSize( h );

3
投票

QTableWidget是一个便利的模型和视图。通常,QAbstractItemModel的data()方法提供了一个SizeHintRole,用于告诉视图每个单元应该是多大。

由于您使用的是QTableWidget,我认为您无法更改其内部模型返回的大小提示。即使是Qt style sheet documentation也没有提及该领域。


0
投票

QTableWidget - > verticalHeader - > setMinimumSectionSize()是正确的方法,它可以在ui中设置。


0
投票

我在这里尝试了所有答案但没有成功。对我来说有用的是设置以下内容。

    table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents)
    table->verticalHeader()->setMaximumSectionSize(10)
© www.soinside.com 2019 - 2024. All rights reserved.