QTableWdiget невероятен для простых дисплеев сетки. Изменение цветов, шрифтов, и т.д. просто.
Однако мне не удалось дать сетке 'более трудный' взгляд с меньшим вертикальным пробелом. Я вижу, что спокойная документация говорит (например, здесь) о
вокруг виджетов, но когда я установил их, я только добираюсь, переезжает весь виджет сетки, а не внутри.
Как я могу установить это (с таблицей стилей или трудно кодированными опциями) непосредственно, чтобы заставить QTableWidget отобразиться более трудный?
Код, получающий '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();
}
РЕДАКТИРОВАТЬ: Я не знаю, как отформатировать здесь блок кода ... простите меня. :)
Edit 2 : Я исправил это, и следующий простой файл tighterTable.pro
помогает мне.
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
SOURCES += tighterTable.cpp # if that is the filename
Большое спасибо за это. Кстати: редактирование кода - это просто отступ на четыре пробела и / или нажатие кнопки с маленьким «101010» в строке форматирования.
QTableWidget - удобная модель и вид. Обычно метод data() QAbstractItemModel
предоставляет SizeHintRole, который используется для того, чтобы сообщить представление о том, какой размер должна быть каждая ячейка.
Так как вы используете QTableWidget, я не думаю, что вы можете что-либо сделать, чтобы изменить подсказку размера, возвращаемую его внутренней моделью. Даже документация таблицы стилей Qt Qt ничего не упоминает в этой области.
То, что вы ищете, имеет очень глупое решение IMHO, но оно работает. Вам нужно установить члены defaultSectionSize() заголовков. Доступ к ним осуществляется через verticalHeader() и horizontalHeader(). Я никогда не устанавливаю ширину столбцов с помощью этой функции, поскольку в большинстве моих проектов добавляются строки, а не столбцы, и я просто вызываю resizeColumnsToContents или изменяю размер вручную. Однако строки - это неудобно. Обычно я получаю высоту шрифта с помощью QFontMetrics и прибавляю 2. Любая последующая добавленная строка должна иметь эту высоту, и все: более плотный вид.
Надеюсь, это поможет.
EDIT:
Untested code:
QFontMetrics fm( my_font );
int h = fm.height() + 2;
my_table->verticalHeader()->setDefaultSectionSize( h );