QTableWdiget非常适合简单的网格显示。改变颜色、字体等是很简单的。
然而,我并没有给网格一个‘更紧密’的外观与较少的垂直空格。我看到Qt文档谈论(如这里)
在小部件周围,但是当我设置这些小部件时,我只得到整个网格小部件的更改,而不是内部的更改。
如何直接设置(使用样式表或硬编码选项)以使QTableWidget显示更紧密?
发布于 2010-03-07 05:40:48
写“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‘在格式化行。
发布于 2010-02-16 02:34:19
您正在寻找的是一个非常愚蠢的解决方案,IMHO,但它的工作。您需要设置标头的defaultSectionSize()成员。通过verticalHeader()和horizontalHeader()访问。我从未真正设置过列宽度w/ this b/c --我的大多数项目都涉及我添加行,而不是列,我只需要调用resizeColumnsToContents或手动调整大小。然而,行是令人讨厌的。我通常使用QFontMetrics获得字体的高度,并添加2。以后添加的任何行都应该具有这个高度,而中提琴:更严格的外观。
希望这能有所帮助。
编辑:
未经测试的代码:
QFontMetrics fm( my_font );
int h = fm.height() + 2;
my_table->verticalHeader()->setDefaultSectionSize( h );发布于 2010-02-01 20:03:49
QTableWidget是一个方便的模型和视图。通常,QAbstractItemModel的data()方法提供一个SizeHintRole,用于告诉视图每个单元格的大小。
由于您使用的是QTableWidget,我不认为您可以做任何事情来更改它的内部模型返回的大小提示。就连Qt样式表文档也没有提到那个领域。
https://stackoverflow.com/questions/2179215
复制相似问题