Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: developer от Июль 28, 2009, 12:25



Название: Как сделать такое![РЕШЕНО]
Отправлено: developer от Июль 28, 2009, 12:25
http://python.developpez.com/cours/pygtktutorial/php/pygtkfr/figures/treeviewcolumn1expander.png

Нужно сделать такой QTreeView (именно виев). Чтобы в первой колонке отображались id, а именно дерево отображалось во второй колонке.


Название: Re: Как сделать такое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Отправлено: ecspertiza от Июль 28, 2009, 12:30
Точно не знаю но по идее дилегаты тебе в помощь.


Название: Re: Как сделать такое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Отправлено: developer от Июль 28, 2009, 13:05
Не думаю что делегаты здесь помогут  :(


Название: Re: Как сделать такое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Отправлено: Авварон от Июль 28, 2009, 13:18
nак колонки можно же местами переставлять, не?


Название: Re: Как сделать такое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Отправлено: developer от Июль 28, 2009, 13:40
Возможно, тогда как????
Или где ето есть в ассистанте


Название: Re: Как сделать такое!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Отправлено: ecspertiza от Июль 28, 2009, 13:47
Посмотри стандартный example там несовсем то , но может поможет.

QtDir\examples\itemviews\simpletreemodel\


Название: Re: Как сделать такое!
Отправлено: developer от Июль 28, 2009, 14:03
Уже смотрю вовсю там нет даже намека на ето.


Название: Re: Как сделать такое!
Отправлено: Авварон от Июль 28, 2009, 14:09
есть int columnViewportPosition ( int column ) const, а вот ф-ию ставящую ее по ходу нету... недоделка?


Название: Re: Как сделать такое!
Отправлено: developer от Июль 28, 2009, 14:52
Решил!!!!!

treeView = new QTreeView();
treeView->header()->moveSection(from, to);


Название: Re: Как сделать такое![РЕШЕНО]
Отправлено: developer от Июль 28, 2009, 14:53
Авварон спасибо за наводку


Название: Re: Как сделать такое![РЕШЕНО]
Отправлено: evd от Январь 09, 2012, 17:47
Возникла такая же задача.
Похоже перемещение колонок единственное решение (пытался сделать через указание колонки с деревом в методах rowCount и parent).
Но при перемещении колонок неверно работает выделение (см. скриншот)
Как заставить выделять строку полностью?
Пытался через делегат:
Код:
void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    if ((index.column()==0) && ( option.state & QStyle::State_Selected ))
    {
        QStyleOptionViewItemV4 opt = option;
        initStyleOption(&opt, index);

        const QWidget *widget = opt.widget;
        opt.rect.setLeft(((QTreeView*)widget)->columnViewportPosition(0));
        QStyle *style = widget ? widget->style() : QApplication::style();
        style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget);
    } else QStyledItemDelegate::paint(painter, option, index);
}

Но в этом случае и текст отображается в начале колонки, поверх треугольника, да и стык видно (см. скриншот 2)