crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Сохранение отображения выделения при потере фокуса ввода
PAFOS
  опции профиля:
сообщение 21.1.2011, 10:55
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Приветствую.

Необходимо, чтобы в QTableView, вне зависимости от состояния фокуса ввода, всегда была выделена текущая строка.




Так же в модели в методе bool setData(const QModelIndex &index, const QVariant &value, int role) есть код:

    if( role != Qt::BackgroundRole )
        return QSqlTableModel::setData(index,value,role);


    m_backgroundColor[index] = value.value<QBrush>();
    return true;


Устанавливаю цвет фона так:

        int columnCount = m_ordersTableModel->columnCount();
        int row = current.row();
        QBrush color = tableOrders->palette().alternateBase();
        for( int column = 0; column < columnCount; column++ )
        {
            QModelIndex idx = m_ordersTableModel->index(row,column);
            m_ordersTableModel->setData( idx, color, Qt::BackgroundRole );
        }


в палитре tableOrders alternateBase отличается от base

В модели в методе QVariant data(const QModelIndex &idx, int role) const есть код:
...
    if( role == Qt::BackgroundRole )
    {
        QBrush b = m_backgroundColor.value(idx); // QMap<QModelIndex,QBrush>
        return b;
    }
...


Убедился, что этот код выполняется, когда QTableView перерисовывает ячейку, так же убедился что QBrush b содержит необходимый мне цвет заливки.

Тем не менее цвет фона ячейки по-прежнему заливается "обычным" цветом.

Есть варианты?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 21.1.2011, 11:09
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(PAFOS @ 21.1.2011, 10:55) *
Необходимо, чтобы в QTableView, вне зависимости от состояния фокуса ввода, всегда была выделена текущая строка.
а просто свойство setSelectionBehavior(QAbstractItemView::SelectRows) не подходит?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 21.1.2011, 11:15
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Если было бы все так просто...)

igor_bogomolov может не так понял суть задачи?

Допустим есть два виджета на форме, один QTableView, другой QLineEdit.
Когда выделяю ячейку в QTableView, тогда выделяется вся строка, тут да - setSelectionBehavior(QAbstractItemView::SelectRows) помогает
Но когда я ставлю курсор ввода в QLineEdit, то выделение в QTableView перестается рисоваться, но текущая строка так и осталась.
Затем снова тыкаю на QTableView (причем на пустое место) и выделение строки снова рисуется.

Надо чтобы при тычке на QLineEdit, выделение в QTableView продолжалось рисоваться

Сообщение отредактировал PAFOS - 21.1.2011, 11:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 21.1.2011, 11:34
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(PAFOS @ 21.1.2011, 11:15) *
igor_bogomolov может не так понял суть задачи?
Задачу то я понял. Вот только идею свою проверил не правильно. В дизайнере на QTableWidget при любых стилях (доступных мне на Linux) даже если перевести фокус ввода в QLineEdit, строка в таблице остаётся выделенной полностью. Да цвет её несколько меняется, но выделение остается. Вот я и поторопился с выводами.

Приложите тогда минимальный пример, разберёмся. Мне лень сейчас свою модель писать и составлять тестовый пример.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 21.1.2011, 22:08
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

Спасибо сказали: 29 раз(а)




Репутация:   8  


Не стоит ниче писать)

Проблема была в теме оформления, используемой в системе. При других темах все правильно отображается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 8:19