1

这段代码

horizontalHeader()->setResizeMode(QHeaderView::Stretch);

拉伸 a 的 cloumns qtablewidget。我希望它们被拉伸,这意味着与 的边界对齐qtablewidget,无论它有多大。

我还希望它们不小于它们的内容并且可以由用户调整大小。

这意味着,我将不得不使用

horizontalHeader()->setResizeMode(QHeaderView::Stretch);
horizontalHeader()->setResizeMode(QHeaderView::Interactive);
horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);

一次,这是不可能的。

我知道我可以给每一列另一个视图,比如

horizontalHeader()->setResizeMode(0, QHeaderView::Interactive);
horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents);

但这不是我想要的。我希望列是

  • 不小于其内容
  • 由用户调整大小
  • 对齐到 qtablewidget 的边框

有任何想法吗?

4

1 回答 1

1

我认为你应该重新实现 sizeHintForColumn。下面的代码会给你一个开始。

int TableWidget::sizeHintForColumn(int column) const  // to get resize on all rows in the column, i.e. not only visible rows.
{
   if(d_resizeColumnsOnVisibleRowsOnly)
      return QTableView::sizeHintForColumn(column);
   if(!model())
      return -1;
   QStyleOptionViewItem option(viewOptions());
   int hint(0);
   QModelIndex index;
   QWidget* w(0);
   for(int row(0);row<rowCount();++row)
   {
       index=model()->index(row,column);
       w=cellWidget(row,column);
       int hint_for_row(qMax(itemDelegate(index)->sizeHint(option,index).width(),(w?w->sizeHint().width():0)));
       hint=qMax(hint,hint_for_row);
   }
   return showGrid()?hint+1:hint;
}
于 2013-08-15T09:10:26.900 回答