Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ChromVanadium от Октябрь 23, 2010, 14:57



Название: QTableWidget - скролл на необходимую позицию
Отправлено: ChromVanadium от Октябрь 23, 2010, 14:57
Добрый день.

Возникла такая необходимость: есть QTableWidget, заполненный данными (номер заказа, заказчик, дата, менеджер и прочее). Таблица заполняется следующим образом - делается выборка заказов из базы данных, QTableWidget очищается и затем последовательно данные по заказам из запроса заносятся в QTableWidget.
При изменении данных по какому либо заказу эти данные заносятся в базу и соответственно таблицу необходимо обновить, чтобы стали видны изменения.

Вопрос такой: при заполнении QTableWidget с нуля он отображает данные начиная с первой строки (currentRow = 0), а мне необходимо, чтобы отображалось так, как было до перезаполнения QTableWidget.
Например: в QTableWidget есть 50 строк, на экране видны 20, начиная с 10-й строки, т.е. с 10-й по 30-ю. Сейчас при обновлении таблицы становятся видны с 1-й по 20-ю, а нужно чтобы после обновления снова было видно с 10-й по 30-ю.

QTableWidget используется потому, что в таблице много типов данных, которые отображаются разными цветами и шрифтами ( заполняю через setCellWidget ( int row, int column, QWidget * widget ), где widget это QLabel с html-текстом ).

К примеру в Delphi у TStringGrid есть переменная TopRow в которой содержится номер первой видимой строки. В Qt не нашел подобного.

Подскажите, пожалуйста, может быть кто-то уже сталкивался с подобным.


Название: Re: QTableWidget - скролл на необходимую позицию
Отправлено: DOOMer от Октябрь 23, 2010, 16:15
Используйте вот этот слот после обновления (передавая ему указатель на изменныный элемент таблицы):

Код
C++ (Qt)
void QTableWidget::scrollToItem ( const QTableWidgetItem * item, QAbstractItemView::ScrollHint hint = EnsureVisible )