Russian Qt Forum
Ноябрь 26, 2024, 01:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTableView и авто resizeColumnsToContents  (Прочитано 16482 раз)
studentenok
Гость
« : Декабрь 04, 2007, 17:42 »

может не досмотрел в асистанте

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

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

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

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

Записан
ритт
Гость
« Ответ #1 : Декабрь 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.

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

продолжай читать ассистант...
на лоре в прошлом месяце проскакивала новость о том, что кто-то где-то намылился переводить кутэшные доки на русский - поищи линк и читай на русском, раз с аглицким _такие_ проблемы!
Записан
studentenok
Гость
« Ответ #2 : Декабрь 04, 2007, 20:41 »

спасибо за разъяснение, понемногу доходит
я похоже не к тому прикрутил

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

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

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

p/s я "учил" французский  Обеспокоенный
Записан
ритт
Гость
« Ответ #3 : Декабрь 04, 2007, 21:21 »

ну, звыняй тогда...день тяжелый
ага...пятку с ухом сконнектил

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

<snip>

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

поищи всё-таки линк на руссифицированные доки...должно быть потешно
Записан
SerjVarshavskiy
Гость
« Ответ #4 : Декабрь 04, 2007, 21:33 »

попробуй
connect( tableView->selectionModel(), SIGNAL( selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT( resizeColumn() ));
Записан
ритт
Гость
« Ответ #5 : Декабрь 04, 2007, 21:44 »

ага...название сигнала, значит, не угадал...

серж, и что получится? боюсь, ресайзКолумн без нумера колумна не сработает...в код лезть лениво
Записан
SerjVarshavskiy
Гость
« Ответ #6 : Декабрь 04, 2007, 22:00 »

студентенок указывал: "в resizeColumn() типа QTableView.resizeColumnsToContents()"
наверно это самописный слот в котором вызывается resizeColumnsToContents()
т.е. номер не нужен
Записан
ритт
Гость
« Ответ #7 : Декабрь 04, 2007, 22:07 »

а...быть может

теперь я боюсь, что QTableView.resizeColumnsToContents() не сработает...шибко сказочный код
Записан
Dodge
Гость
« Ответ #8 : Декабрь 05, 2007, 14:41 »

человеки, resizeColumnsToContents с багом, баг давно отрепорчен, ждем фикса.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #9 : Декабрь 05, 2007, 14:59 »

человеки, resizeColumnsToContents с багом, баг давно отрепорчен, ждем фикса.

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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Dodge
Гость
« Ответ #10 : Декабрь 05, 2007, 15:02 »

А какой его айди на Task Tracker?
Завтра скажу, мессадж с айди у сотрудника дома
Записан
studentenok
Гость
« Ответ #11 : Декабрь 05, 2007, 21:40 »

вроде работает, ничего не замечаю, но таблички маленькие
Записан
ритт
Гость
« Ответ #12 : Декабрь 05, 2007, 23:00 »

русская локализация доков по кутям http://www.crossplatform.ru/documentation/qtdoc4.3/
ещё у меня есть частично допереведённый qt_ru.ts - могу выложить, если кому надо
Записан
Dodge
Гость
« Ответ #13 : Декабрь 06, 2007, 13:59 »

А какой его айди на Task Tracker?
Либо 181218 либо 181351
Записан
ритт
Гость
« Ответ #14 : Декабрь 06, 2007, 14:13 »

нет таких айдишничков
как себя бага хоть проявляла? /* так...праздное любопытство */
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.