如何在Qt中为QTableView对象获得正确的行高?

时间:2010-09-10 18:16:57

标签: c++ qt qt4 qtableview

从这个屏幕截图中,您可以看到行内的大量空间:

alt text

我已经使用这些功能来调整大小:

resizeRowsToContents();
resizeColumnsToContents();

如何更好地适应细胞/行大小?

6 个答案:

答案 0 :(得分:11)

试试这些:

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

答案 1 :(得分:4)

试试这个:

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

答案 2 :(得分:1)

我正在使用Qt 4.7,这对我QTableView有效:

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

答案 3 :(得分:0)

我遇到同样的问题,看来还有很多其他问题:

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);

答案 4 :(得分:0)

当您在具有隐藏的verticalHeader的空表的tableView上调用resizeRowsToContents时,Qt中似乎存在一个错误,它不能准确地调整行的大小。考虑到表经常是空的,这确实是一个麻烦的问题。幸运的是,我在qtcentre thread上找到了一种解决方法,如下所示:

如果表/模型为为空,请使用:

from natsort import natsorted

df = df.set_index('Index').reindex(natsorted(df.Index)).reset_index()
Out[42]: 
      Index  Code  Parent
0         1     2     NaN
1       1.1     1     2.0
2     1.2.1     3     4.0
3   1.2.2.1     5     3.0
4  1.2.16.1     4     2.0
5       1.3    45     2.0
6     1.3.1    10    45.0

否则,这是一种解决方法:

        tableView->resizeRowsToContents();
        const int rowHeight = tableView->verticalHeader()->sectionSize(0);
        tableView->verticalHeader()->setDefaultSectionSize(rowHeight);

答案 5 :(得分:-2)

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