Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pichini от Апрель 10, 2012, 16:23



Название: Url в QStandardItemModel
Отправлено: pichini от Апрель 10, 2012, 16:23
Все привет!
Подскажи можно ли, и как лучше сделать?
Хочу чтобы в одной из колонок выводилась ссылка и выглядела как ссылка, ну и сообственно обработка нажатия и открытие в браузере.


Название: Re: Url в QStandardItemModel
Отправлено: Пантер от Апрель 10, 2012, 16:42
Используй свой делегат. Поищи по форуму, уже обсуждалось.


Название: Re: Url в QStandardItemModel
Отправлено: pichini от Апрель 11, 2012, 11:27
Спасибо!
Сразу склонялся к делегатам, но до этого опыт работы с ними был только со стороны редактирования...
К тому же здесь представлено несколько разных вариантов реализации метода paint, разобраться и понять что к чему, заняло достаточно продолжительное время. В итоге остановился на следующем варианте:

Код
C++ (Qt)
void LinkItemDelegate::paint (QPainter * painter,
                             const QStyleOptionViewItem & option,
                             const QModelIndex & index ) const
{
   QStyleOptionViewItemV4 myOption = option;
   myOption.font.setUnderline(true);
   myOption.palette.setColor(QPalette::Text, Qt::blue);
   QStyledItemDelegate::paint(painter, myOption, index);
}

Открытие ссылки через: void QAbstractItemView::doubleClicked( const QModelIndex & index )   [signal]

В идеале еще бы курсор менять при наведении, но решил на это пока забить...