Получить делегата для установки размера ячейки в QTableView - PullRequest
0 голосов
/ 03 ноября 2011

Я использую делегат для отображения QPixmap из QAbstractTableModel в QTableView, например:

void LabelDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
  QPixmap pixmap = index.data(Qt::DisplayRole).value<QPixmap>();

  QRect rect = option.rect;
  rect.adjust(rect.width()/3, 0, -rect.width()/3, 0);
  painter->drawPixmap(rect, pixmap, pixmap.rect());
}

Однако я хочу убедиться, что ячейка достаточно велика для отображения всей карты QPixmap.,Я попытался использовать функцию sizeHint:

QSize LabelDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
{
  std::cout << "sizeHint()" << std::endl;
  unsigned int sideLength = 300;
  return QSize(sideLength, sideLength);
}

, но, похоже, размер ячейки не изменился.Как заставить размер ячейки соответствовать размеру QPixmap?

Спасибо,

Дэвид

1 Ответ

1 голос
/ 03 ноября 2011

Вы должны проверить resizeColumnsToContents () и resizeRowsToContents слотов для QTableView.

Каждый раз, когда элемент добавляется в вашу модель, излучайте сигнал и соединяйте его со слотом, который вызывает эти две функции, чтобы обновить геометрию вашего вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...