QTableWdiget对于简单的网格显示非常棒。更改颜色,字体等很简单。
但是,我没有设法让网格看起来更“紧”,而且垂直空白更少。我看到Qt文档谈论(例如here)关于
围绕小部件,但是当我设置这些时,我只会在整个网格小部件而不是内部进行更改。
如何直接设置(使用样式表或硬编码选项)以使QTableWidget显示更紧密?
答案 0 :(得分:5)
你正在寻找的东西有一个非常愚蠢的解决方案恕我直言,但它的工作原理。您需要设置标头的defaultSectionSize()成员。通过verticalHeader()和&进入horizontalHeader()。我从来没有真正设置列宽度w / this b / c我的大多数项目都涉及我添加行而不是列,我只是调用resizeColumnsToContents或手动调整大小。但是,行是令人厌烦的。我通常使用QFontMetrics获得字体的高度,并添加2.添加的任何后续行应该具有此高度,并且中提琴:更紧密的外观。
希望有所帮助。
修改强>
未经测试的代码:
QFontMetrics fm( my_font );
int h = fm.height() + 2;
my_table->verticalHeader()->setDefaultSectionSize( h );
答案 1 :(得分: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”的按钮。
答案 2 :(得分:3)
QTableWidget是一个便利的模型和视图。通常,QAbstractItemModel
的data()方法提供SizeHintRole,用于告诉视图每个单元格的大小。
由于您正在使用QTableWidget,我认为您无法更改其内部模型返回的大小提示。即使Qt style sheet documentation在该领域也没有提到任何内容。
答案 3 :(得分:0)
QTableWidget - &gt; verticalHeader - &gt; setMinimumSectionSize()是正确的方法,可以在ui中设置。
答案 4 :(得分:0)
我在这里尝试所有答案都没有成功。尽管对我有用的是设置两者以下内容。
table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents)
table->verticalHeader()->setMaximumSectionSize(10)