1

このコード

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

のクローンを伸ばしqtablewidgetます。私はそれらを引き伸ばしたいと思っていますqtablewidget

また、コンテンツよりも小さくならないようにし、ユーザーがサイズを変更できるようにしたいと考えています。

つまり、使用する必要があります

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

一度に、それは不可能です。

次のように、すべての列に別のビューを与えることができることを知っています

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

しかし、これは私が望むものではありません。列が欲しい

  • その内容より小さくない
  • ユーザーによるサイズ変更可能
  • qtablewigett の境界線に揃える

何か案は?

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 に答える