Автор Гілка: Програмування у Qt v.4.1.0  (Прочитано 2581 раз)

Відсутній Yura_Vasurchak

  • Новачок
  • *
  • дописів: 1
  • Карма: +0/-0
  • I Love YaBB 2!
Хто програмує в Qt (в мене version 4.1.0) допоможіть.
Як з класу моделі(Model) у вигляд(View) передати параметр Qt::SizeHintRole. Потрібно змінити висоту рядка. Звичайно, щоб він правильно сприйнявся.
Приведу приклад коду:
QVariant ...Model::data( const QModelIndex & index, int role ) const

      ...

      switch (role)
      {

      ...

            case Qt::SizeHintRole      :
                  return QSize(10,10);
                  break;

      ...

      }
Не працює. Пробував різні варіанти ( return "10,10", return 10,10, return (10,10), та ін. )Те ж саме пробував зробити і у
QVariant ...Model::headerData( int section, Qt::Orientation orientation, int role) const
Нічого не виходить.
Зате в управляючій програмі оператор view1->setRowHeight(4,15) працює нормально. Але потрібно змінити висоту всіх рядків і, на мою думку, цим повинна займатись модель.
Дякую.


Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Програмування у Qt v.4.1.0
« Відповідей #1 : 2006-11-04 16:28:25 »
конструкція
            case Qt::SizeHintRole      :
                  return QSize(10,10);
                  break;
є правильною
В мене в Qt 4.2.1 вона працює без проблем принаймні на Table та List.

Що можу порадити:
1) спробувати більші значення оскільки (10,10) - це досить близько до  типових розмірів
2) спробувати поставити  cerr << "returning qsize" << endl; щоб перевірити що цей рядок виконується
3) перевірити, що немає елементів в рядках, які обмежують мінімальний розмір (напр, більші піктограми)
4) поновити Qt до 4.1.5 (або 4.2.1)
Fedora 35 (x86-64)

Відсутній gvy

  • Письменник
  • *****
  • дописів: 576
  • Карма: +0/-0