Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: studentenok от Декабрь 04, 2007, 17:42



Название: QTableView и авто resizeColumnsToContents
Отправлено: studentenok от Декабрь 04, 2007, 17:42
может не досмотрел в асистанте

при окончании редактирования ячейки в QTableView нужно изменить размер столбца под содержимое ячейки
(под максимальное по длине симолов содержимое в видимых ячейках)

сделал setEditStrategy(QSqlTableModel::OnFieldChange)
и повесил на connect( &model,SIGNAL( beforeUpdate(int, QSqlRecord &)), this, SLOT( resizeColumn() ));

в resizeColumn() типа QTableView.resizeColumnsToContents()

но QTableView как-то странно ведёт себя, после нажатия Enter (типа окончание редактирования ячейки) фокус
не понятно куда "улетает" (на первую верхнюю ячейку QTableView)   ((



Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: ритт от Декабрь 04, 2007, 18:51
/* резко захотелось админку */

ты сам понял что сделал? ты очень многого не досмотрел в ассистанте!
Цитировать
void QSqlTableModel::setEditStrategy ( EditStrategy strategy )   [virtual]
Sets the strategy for editing values in the database to strategy.
This will revert any pending changes.
See also editStrategy() and revertAll().

Цитировать
QSqlTableModel::OnFieldChange - All changes to the model will be applied immediately to the database.

Цитировать
void QTableView::resizeColumnsToContents ()   [slot]
Resizes all columns based on the size hints of the delegate used to render each item in the columns.

найди какой-нибудь гуи к любой бд, выполни в нём селект, чтобы в табличку выбрались строки, затем измени какую-нибудь ячейку, затем растяни хидер по контенту и тут же снова сделай селект...
куда делся фокус? непонятно куда?

продолжай читать ассистант...
на лоре в прошлом месяце проскакивала новость о том, что кто-то где-то намылился переводить кутэшные доки на русский - поищи линк и читай на русском, раз с аглицким _такие_ проблемы!


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: studentenok от Декабрь 04, 2007, 20:41
спасибо за разъяснение, понемногу доходит
я похоже не к тому прикрутил

идея такая, что после нажатия Enter/Tab или перевода фокуса мышкой/клавишами
столбец автоматически изменял свой размер под содержимое ячеек.

пока получается, что если в поле внесли содержимое по размеру больше, чем размер столбца,
то обрезает по размеру столбца, что очень не удобно.

кто-нибудь с этим работал?

p/s я "учил" французский  :-[


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: ритт от Декабрь 04, 2007, 21:21
ну, звыняй тогда...день тяжелый
ага...пятку с ухом сконнектил

у селекшМодели лови сигнал куррентЧенджет(нью, олд) /* если не путаю */ и для олд.колумен() делай ресайзТуКонтент

<snip>

мне такой подход кажется несколько неуместным (в глазах юзверя) - юзверь выставил столбцы, как ему нравится, а оно потом всё прыгает...

поищи всё-таки линк на руссифицированные доки...должно быть потешно


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: SerjVarshavskiy от Декабрь 04, 2007, 21:33
попробуй
connect( tableView->selectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT( resizeColumn() ));


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: ритт от Декабрь 04, 2007, 21:44
ага...название сигнала, значит, не угадал...

серж, и что получится? боюсь, ресайзКолумн без нумера колумна не сработает...в код лезть лениво


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: SerjVarshavskiy от Декабрь 04, 2007, 22:00
студентенок указывал: "в resizeColumn() типа QTableView.resizeColumnsToContents()"
наверно это самописный слот в котором вызывается resizeColumnsToContents()
т.е. номер не нужен


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: ритт от Декабрь 04, 2007, 22:07
а...быть может

теперь я боюсь, что QTableView.resizeColumnsToContents() не сработает...шибко сказочный код


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: Dodge от Декабрь 05, 2007, 14:41
человеки, resizeColumnsToContents с багом, баг давно отрепорчен, ждем фикса.


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: pastor от Декабрь 05, 2007, 14:59
человеки, resizeColumnsToContents с багом, баг давно отрепорчен, ждем фикса.

А какой его айди на Task Tracker?


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: Dodge от Декабрь 05, 2007, 15:02
А какой его айди на Task Tracker?
Завтра скажу, мессадж с айди у сотрудника дома


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: studentenok от Декабрь 05, 2007, 21:40
вроде работает, ничего не замечаю, но таблички маленькие


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: ритт от Декабрь 05, 2007, 23:00
русская локализация доков по кутям http://www.crossplatform.ru/documentation/qtdoc4.3/ (http://www.crossplatform.ru/documentation/qtdoc4.3/)
ещё у меня есть частично допереведённый qt_ru.ts - могу выложить, если кому надо


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: Dodge от Декабрь 06, 2007, 13:59
А какой его айди на Task Tracker?
Либо 181218 либо 181351


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: ритт от Декабрь 06, 2007, 14:13
нет таких айдишничков
как себя бага хоть проявляла? /* так...праздное любопытство */


Название: Re: QTableView и авто resizeColumnsToContents
Отправлено: Dodge от Декабрь 06, 2007, 14:27
нет таких айдишничков
как себя бага хоть проявляла? /* так...праздное любопытство */
Вот что было запощено:
Цитировать
> Short description:
> table columns auto resize
>
> What I did:
> QTableWidget *tableWidget = new QTableWidget;
> tableWidget->horizontarHeader()->setResizeMode(QHeaderView::ResizeToContent);
>
>
> What I expected to see:
> I would happen to see auto resize of table columns when i finished
> editins cell contents that overlapps width of the column.
>
>
> What I got instead:
> Auto resize of column will happens only if i manually resize main
> window.
>
> More info:
> And another platform have this bug:
> Gentoo Linux, Qt 4.3.0, gcc 4.2.0