Тонкая работа с QListView

Модератор: Модераторы разделов

zayac_val
Сообщения: 38
ОС: openSuse10.3

Тонкая работа с QListView

Сообщение zayac_val »

Есть кантрол QListView, который я использую как таблицу, и есть большая необходимость в том, чтобы иметь возможность выделить конкретную строку каким либо цветом, или вообще хоть както выделить. Я дальше чем задать цвет на весь кантрол ничего не нашел.
Если есть какойто другой кантрол, в который можно выгрузить данные в виде таблицы и поддерживающий возможность выделения отдельной строки, буду благодарен.
Спасибо сказали:
Аватара пользователя
DiS
Сообщения: 296
ОС: Gentoo

Re: Тонкая работа с QListView

Сообщение DiS »

zayac_val писал(а):
01.09.2008 12:29
который я использую как таблицу,

так может логичней использовать QTableView?
Если правильно задать вопрос, то он сам по себе будет ответом.
Спасибо сказали:
zayac_val
Сообщения: 38
ОС: openSuse10.3

Re: Тонкая работа с QListView

Сообщение zayac_val »

DiS писал(а):
01.09.2008 12:35
zayac_val писал(а):
01.09.2008 12:29
который я использую как таблицу,

так может логичней использовать QTableView?


QTableView ? наверно имелось в виду QTable, но суть не в том, проблема как выделить конкретную строку, или текст в этой строке каким-либо цветом.
Спасибо сказали:
Аватара пользователя
DiS
Сообщения: 296
ОС: Gentoo

Re: Тонкая работа с QListView

Сообщение DiS »

zayac_val писал(а):
01.09.2008 12:47
QTableView ? наверно имелось в виду QTable,

Что написано, то и имелось ввиду. Вы Qt3 используете?
Если правильно задать вопрос, то он сам по себе будет ответом.
Спасибо сказали:
zayac_val
Сообщения: 38
ОС: openSuse10.3

Re: Тонкая работа с QListView

Сообщение zayac_val »

DiS писал(а):
01.09.2008 13:09
zayac_val писал(а):
01.09.2008 12:47
QTableView ? наверно имелось в виду QTable,

Что написано, то и имелось ввиду. Вы Qt3 используете?

да
Спасибо сказали:
zayac_val
Сообщения: 38
ОС: openSuse10.3

Re: Тонкая работа с QListView

Сообщение zayac_val »

Помогите разобраться новичку в Qt. как можно рисовать в кантроле, в частности интересует QTable
Работаю пока с Qt3
Спасибо сказали:
Аватара пользователя
destr
Сообщения: 128
ОС: Debian

Re: Тонкая работа с QListView

Сообщение destr »

Копайте в сторону paintCell
А что вы с таблицей хотите сделать? Вот, например, код, который рисует вот такие строки

Код:

void CTableEvents::paintCell (QPainter* _p, int _r, int _c, const QRect& _cr, bool _sel, const QColorGroup& _cg) { SyslogEvent *_ev = &m_vecEvents[relem]; if (!_ev) return; _p->save (); _p->setClipRect (cellRect (_r, _c), QPainter::CoordPainter); if (_sel && (focusStyle () == SpreadSheet) && (_r == currentRow ()) && (_c == currentColumn ()) && (hasFocus () || viewport ()->hasFocus ()) ) _sel = false; _p->setPen (_sel ? _cg.highlightedText () : _cg.text ()); QColorGroup cg (_cg); switch (_ev->level) { case LEVEL_ERROR: cg.setColor (QColorGroup::Base, QColor (120, 51, 255, QColor::Hsv)); break; case LEVEL_WARNING: cg.setColor (QColorGroup::Base, QColor (60, 102, 255, QColor::Hsv)); break; case LEVEL_CRIT: cg.setColor (QColorGroup::Base, QColor (40, 153, 255, QColor::Hsv)); break; case LEVEL_ALERT: cg.setColor (QColorGroup::Base, QColor (30, 102, 255, QColor::Hsv)); break; case LEVEL_EMERG: cg.setColor (QColorGroup::Base, QColor (300, 51, 255, QColor::Hsv)); break; default: break; } QTable::paintCell (_p, _r, _c, _cr, _sel, cg); switch (_c) { case COLUMN_ARROW: if (_ev->level == LEVEL_UNKNOWN) break; _p->drawImage (2, 2, m_img_arrows[_ev->level]); _p->drawText(2, 2, "!"); break; case COLUMN_DATE: _p->drawText (2, 2, _cr.width () - 4, _cr.height () - 4, fieldAlignment (_c), timet2String(_ev->date)); break; case COLUMN_HOST: { _p->drawImage (2, 2, m_img_remotehost); _p->drawText (m_img_remotehost.width () + 4, 2, _cr.width () - 4, _cr.height () - 4, fieldAlignment (_c), _ev->host); } break; case COLUMN_EVENT: { QString desc; if (!_ev->description.empty()) desc = QString::fromLocal8Bit(_ev->description.c_str()); else desc = QString::fromLocal8Bit(_ev->type.c_str()); if (!_ev->subtype.empty()) desc = QString ("(%1) %2").arg(_ev->subtype).arg(desc); int width = 2; _p->drawText (width, 2, _cr.width () - 4, _cr.height () - 4, fieldAlignment (_c), desc); } break; case COLUMN_RESULT: if (_ev->result == RESULT_UNDEFINED) break; if (_ev->result == RESULT_SUCCESS) _p->drawImage (2, 2, m_img_success); else if (_ev->result == RESULT_FAILED) _p->drawImage (2, 2, m_img_failed); break; case COLUMN_PARAMS: { int width = 2; bool is_first_param = true; std::list<Param>::iterator it = _ev->params.begin(); for (; it != _ev->params.end(); ++it) { if (is_first_param) is_first_param = false; else { _p->drawText (width, 2, _cr.width () - 4, _cr.height () - 4, fieldAlignment (_c), ";"); width += fontMetrics ().width (";") + 2; } if (it->first != PARAM_UNDEFINED && !m_img_params[it->first].isNull()) { _p->drawImage (width, 2, m_img_params[it->first]); width += m_img_params[it->first].width () + 2; _p->drawText (width, 2, _cr.width () - 4, _cr.height () - 4, fieldAlignment (_c), QString::fromLocal8Bit (it->second.value.c_str())); width += fontMetrics ().width (it->second.value.c_str()) + 2; } else { QString param = QString ("%1 = %2") .arg (QString::fromLocal8Bit (it->second.name.c_str())) .arg (QString::fromLocal8Bit (it->second.value.c_str())); _p->drawText (width, 2, _cr.width () - 4, _cr.height () - 4, fieldAlignment (_c), param); width += fontMetrics ().width (param) + 2; } } } break; default: break; } _p->restore (); }
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
zayac_val
Сообщения: 38
ОС: openSuse10.3

Re: Тонкая работа с QListView

Сообщение zayac_val »

Задача впринципе простая, выделить строку с данными цветом.
В paintEvent я делал следующую вещь:

Код: Выделить всё


QPainter painter(table1)
QRect rec=table1->cellRect(0,0);
table1->paintCell(painter,0,1,rec,false);

Результата понятно никакого.
Я так подозреваю что делаю что-то не так, при чем глобально, откройте мне глаза на истину.
Спасибо сказали: