Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: XandoX от Сентябрь 24, 2007, 16:51



Название: Айтемы в таблице не выделяються QT4.3.0
Отправлено: XandoX от Сентябрь 24, 2007, 16:51
Собственно сабж?

для таблицы(QTableView) поставил

   m_main_table->setSelectionMode(QAbstractItemView::ExtendedSelection);
   m_main_table->setSelectionBehavior(QAbstractItemView::SelectItems);
для модели
флаги
        return Qt::ItemIsEditable|Qt::ItemIsSelectable|Qt::ItemIsEnabled;

что еще нужно, может с делегатом что сделать, но у него про выделения ничего не нашел, к стати, наверное, в связи с тем что нечего не выделяется, делегат не отрабатывет (делегат для редактирования айтемов)

не выделяеться следующим образом, мышкай клацешь, покак держишь, вроде выделено, отпускаешь выделение проподает, вот такая вот фигня, как бороться?

ps убрал теги кода, а то в нем нифега не видно


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: Пантер от Сентябрь 24, 2007, 18:06
Делаешь так
qtvReferences=new QTableView(this);
qtvReferences->setSelectionBehavior(QAbstractItemView::SelectRows);//Замени на нужное
И больше ничего. Зачем модель трогать?


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: XandoX от Сентябрь 25, 2007, 08:59
некатит, если SelectRows ставишь, строка подмышкой выделяеться, но после отпускания кнопки тудже сбрасываеться,
это может быть из-за, того что таблица обновляеться 10 раз в секунду?


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: Tamara от Сентябрь 25, 2007, 11:09
это может быть из-за, того что таблица обновляеться 10 раз в секунду?
А она как обновляется-то? если reset-ится по 10 раз в секунду, то всяко из-за этого ;)
А вообще, недостаточно данных для ответа на поставленный вопрос: из-за вызова вышеприведенных функций и возврата флагов проблем быть не должно, ошибка где-то в другом месте, но без кода можно только гадать на кофейной гуще, где именно.


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: Пантер от Сентябрь 25, 2007, 11:34
Перед каждым обновлением сохраняй позицию и после восстанавливай.


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: XandoX от Сентябрь 25, 2007, 12:29
если reset-ится по 10 раз в секунду, то всяко из-за этого ;)

ага из-за этого, я поменял, теперь выделение работает.

тока вот редактироваться все равно не хоче, это то же из-за этого? если да, то как помимо сохранения текущего индекса и потом его восстановления с этим бороться?


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: Tonal от Сентябрь 25, 2007, 12:49
И редактирование из-за этого. ;-)
Выходов можно несколько придумать, например:
*) Редактировать в отдельном диалоге.
*) Запрещать рефрешь пока редактируешь.

Кроме того, можно
*) Рефрешить не весь View, а только те строки данные в которых реально изменились.
*) Рефрешить только если пользователь ничего не делает.

Ну и если изложишь что это за данные, откуда они берутся и что с ними предполагается делать, может быть тебе ещё чего хорошего посоветуют. ;-)


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: XandoX от Сентябрь 25, 2007, 13:03
Ну и если изложишь что это за данные, откуда они берутся и что с ними предполагается делать, может быть тебе ещё чего хорошего посоветуют. ;-)

ну данные забираются с железяки специальной, часть даных, а часть с помощью редактирования надо отсылать,
тут проблема не в том где и как редактировать, а в том что TableView не успевает сообразить что надо редактировать,
тоесть вопрос в том как сохранять инфу про редактирование и где ее брать, я пробовал ставить тригер редактирования SelectedClicked, но он все равно похоже не успевает отработать, а время опроса менять не хочеться, уж больно тогда данные запаздывають


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: denka от Сентябрь 25, 2007, 13:42
По моему проблема у тебя в том что ты делаеш полный reset всему вьюву. Я так понимаю данные от железяки и от опереатора не пересекаються. Не лучше обновлять только то что изменилось и не трогать то что нет? Тебе стоит изменить логику своей модели. Ведь dataChanged еще не кто не отменял.


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: XandoX от Сентябрь 25, 2007, 13:50
блин, еще одну проблему нашел.

если в таблице записей стоко, что включается скролинг,  то при выделение одно из айтемов, таблица пытается сохранить его на экране, как это отключить? а то я что-то не нашел


Название: Re: Айтемы в таблице не выделяються QT4.3.0
Отправлено: XandoX от Сентябрь 25, 2007, 14:29
оооо все заработало, спасибо den'ka