Название: setStyleSheet и QTreeView Отправлено: helga1917 от Август 14, 2013, 15:01 Есть таблица со строками QTreeView
Код: proxyView = new QTreeView; Код: proxyView->setStyleSheet("QTreeView::item {background-color: red}" //для всех строк Есть кнопка, при клике на которую, цвет выделенной белой строки должен измениться на зеленый и остаться таким, т.е. цвет этой строки больше изменяться не должен. Как этого добиться? Код: OkButton = new QPushButton; Код: void changeRow() Название: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 14, 2013, 15:13 что-то подобное тут: http://usefulscript.ru/highlight_table.php
тоже при клике на строку ее цвет изменяется и остается, но это не qt Название: Re: setStyleSheet и QTreeView Отправлено: Bepec от Август 14, 2013, 16:26 Вам не styleSheet нужен, а отдавать в модели в Data() роль BackgroundRole для нужных строк.
PS стайлшитом это сделать очень сложно. Название: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 15, 2013, 09:41 изменила функцию changeRow(), но почему-то не работает:
Код: void changeRow() Название: Re: setStyleSheet и QTreeView Отправлено: Bepec от Август 15, 2013, 10:29 Возможно стоит перечитать моё сообщение? :D
Название: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 15, 2013, 10:41 отдавать в модели в Data() роль BackgroundRole для нужных строк. с data() мне не понятно, как передать цвет???Код: void changeRow() Название: Re: setStyleSheet и QTreeView Отправлено: kambala от Август 15, 2013, 10:54 можно так попробовать:
Код
Название: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 15, 2013, 12:49 kambala, выдает 2 ошибки:
Код: public: Название: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 15, 2013, 12:52 А как передать в setData() не одну ячейку, а всю строку? Можно как-нибудь сделать чтоб закрашивать не одну ячейку, а всю строку, без styleSheet?
Название: Re: setStyleSheet и QTreeView Отправлено: kambala от Август 15, 2013, 14:19 kambala, выдает 2 ошибки: #include <QSet>Код: public: только код, который я написал, надо помещать в свой существующий класс модели, а не в новый. если у тебя нет отдельного класса модели, то унаследуйся от того, который сейчас используешь. А как передать в setData() не одну ячейку, а всю строку? Можно как-нибудь сделать чтоб закрашивать не одну ячейку, а всю строку, без styleSheet? просто собери все индексы для текущей строкиНазвание: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 15, 2013, 14:54 да, помещаю этот код в класс модели
это в хэдер модели: Код: #include <QSet> // подключен заголовок Код: QVariant MyModel::data(const QModelIndex &index, int role) const Код: void MyWidget::changeRow() Но все равно ругается в хэдере, теми же ошибками :-[ Название: Re: setStyleSheet и QTreeView Отправлено: Hellraiser от Август 15, 2013, 14:57 Правильно вот так:
Код
Название: Re: setStyleSheet и QTreeView Отправлено: helga1917 от Август 15, 2013, 15:05 заработало :) спасибо
|