Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Hordi от Май 23, 2006, 18:07



Название: Как изменить высоту строк в QListView?
Отправлено: Hordi от Май 23, 2006, 18:07
Есть ли способ решения проблемы кроме как через увеличение фонта?


Название: Как изменить высоту строк в QListView?
Отправлено: BaltikS от Май 23, 2006, 19:34
В 3 я изменял, в 4-м ещё не приходилось


Название: Re: Как изменить высоту строк в QListView?
Отправлено: nEoN от Май 23, 2006, 21:22
Цитата: "Hordi"
Как изменить высоту строк в QListView?
Есть ли способ решения проблемы кроме как через увеличение фонта?

В Qt4 это делается через переопределение метода sizeHint у делегата представления.
Вот пример :
Код:
class MyItemDelegate: public QItemDelegate
{
public:
MyItemDelegate(QObject * parent) : QItemDelegate(parent) {}

QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex & index) const
{
QSize newSize = QItemDelegate::sizeHint(option, index);
newSize.setHeight(30); // Устанавливаем любую высоту строки, например 30
return newSize;
}
};

....
// Присваиваем QListView новый делегат
listView->setItemDelegate(new MyItemDelegate(this));
...

И если необходимо, чтобы все строки были одинакового размера, то ещё не помешает установить listView->setUniformItemSizes(true), чтобы Qt не расчитывала размер строки по нескольку раз.


Название: Как изменить высоту строк в QListView?
Отправлено: Hordi от Май 23, 2006, 21:52
У меня Qt-3.

Переопределил у QListViewItem setHeight(int) - проблему решил, хотя коряво это в общем-то...