Как получить правильную высоту строки в Qt для объекта QTableView?

на этом скриншоте вы можете увидеть много места внутри строк:

alt text

я использовал эти функции для изменения размера:

resizeRowsToContents();
resizeColumnsToContents();

Как я могу получить лучшую подгонку для размеров ячеек / строк?

5 ответов


попробуйте эти:

verticalHeader()->setDefaultSectionSize(int size)
horizontalHeader()->setDefaultSectionSize(int size)

попробуйте это:

void QHeaderView::setResizeMode(QHeaderView::ResizeToContents);

Я использую Qt 4.7, и это сработало для меня на QTableView:

tableView->resizeColumnsToContents();
tableView->resizeRowsToContents();
tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);

У меня такая же проблема, как и у многих других, кажется:

http://www.qtforum.org/article/13421/qtableview-how-to-make-rows-size-smaller.html

моя быстрая работа Хака для простой таблицы только с несколькими строками (предположим, что все строки имеют одинаковую высоту текста, и это, вероятно, работает только для некоторых шрифтов, возможно, только на Windo):

int rowHeight = ui.tableView_Available->rowHeight(0) *1/2;
for (unsigned int i = 0; i < model->rowCount(); i++)
  ui.tableView_Available->verticalHeader()->resizeSection(i, rowHeight);

QTimer::singleShot(1, ui->tableView, SLOT(resizeRowsToContents()));