QTableWidget: Как я могу получить более трудные строки с меньшим количеством дополнения пространства по вертикали?

QTableWdiget невероятен для простых дисплеев сетки. Изменение цветов, шрифтов, и т.д. просто.

Однако мне не удалось дать сетке 'более трудный' взгляд с меньшим вертикальным пробелом. Я вижу, что спокойная документация говорит (например, здесь) о

  • поле
  • граница
  • дополнение

вокруг виджетов, но когда я установил их, я только добираюсь, переезжает весь виджет сетки, а не внутри.

Как я могу установить это (с таблицей стилей или трудно кодированными опциями) непосредственно, чтобы заставить QTableWidget отобразиться более трудный?

8
задан Dirk Eddelbuettel 1 February 2010 в 18:51
поделиться

3 ответа

Код, получающий '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» в строке форматирования.

5
ответ дан 5 December 2019 в 12:58
поделиться

QTableWidget - удобная модель и вид. Обычно метод data() QAbstractItemModel предоставляет SizeHintRole, который используется для того, чтобы сообщить представление о том, какой размер должна быть каждая ячейка.

Так как вы используете QTableWidget, я не думаю, что вы можете что-либо сделать, чтобы изменить подсказку размера, возвращаемую его внутренней моделью. Даже документация таблицы стилей Qt Qt ничего не упоминает в этой области.

3
ответ дан 5 December 2019 в 12:58
поделиться

То, что вы ищете, имеет очень глупое решение IMHO, но оно работает. Вам нужно установить члены defaultSectionSize() заголовков. Доступ к ним осуществляется через verticalHeader() и horizontalHeader(). Я никогда не устанавливаю ширину столбцов с помощью этой функции, поскольку в большинстве моих проектов добавляются строки, а не столбцы, и я просто вызываю resizeColumnsToContents или изменяю размер вручную. Однако строки - это неудобно. Обычно я получаю высоту шрифта с помощью QFontMetrics и прибавляю 2. Любая последующая добавленная строка должна иметь эту высоту, и все: более плотный вид.

Надеюсь, это поможет.

EDIT:

Untested code:

QFontMetrics fm( my_font );
int h = fm.height() + 2;
my_table->verticalHeader()->setDefaultSectionSize( h );
5
ответ дан 5 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: