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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView несколько строк в 1 ячейку  (Прочитано 11410 раз)
chu
Гость
« : Март 09, 2011, 23:36 »

Как записать?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 09, 2011, 23:39 »

Может ты хочешь перенос строк в ячейке?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
chu
Гость
« Ответ #2 : Март 10, 2011, 00:03 »

Может ты хочешь перенос строк в ячейке?
именно это)
Записан
Archa4
Гость
« Ответ #3 : Март 11, 2011, 12:00 »

QLabel label = new QLabel;

label->setWordWrap(true);
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Март 11, 2011, 12:07 »

view->setWordWrap (true);
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Март 11, 2011, 13:13 »

Цитировать
view->setWordWrap (true);
Чего-то мне кажется, что автору нужно что-то другое  Улыбающийся, т.к.
Цитировать
This property is true by default.
Записан

Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Март 11, 2011, 13:21 »

В последнее время что-то с телепатией туго - весна сказывается, поэтому воспринимаю буквально.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
chu
Гость
« Ответ #7 : Март 11, 2011, 17:45 »

Цитировать
view->setWordWrap (true);
Чего-то мне кажется, что автору нужно что-то другое  Улыбающийся, т.к.
Цитировать
This property is true by default.
да, другое.
идеально было бы в DisplayRole модели прописать что-то типа:
(если длина строки > заданой длины){
записать в две строки
}
я замечал, что когда вбиваешь текст, который чуть длинее размера столбца,
последние символы отделенные пробелом переносятся на 2ю строку (без resizeColumnsToContents()),
м.б. это свойство как-то можно изменить...
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Март 11, 2011, 17:52 »

Цитировать
я замечал, что когда вбиваешь текст, который чуть длинее размера столбца,
последние символы отделенные пробелом переносятся на 2ю строку
Т.е. нужен перенос только при редактировании содержимого ячейки?
Записан

Qt 5.11/4.8.7 (X11/Win)
chu
Гость
« Ответ #9 : Март 16, 2011, 14:49 »

Цитировать
я замечал, что когда вбиваешь текст, который чуть длинее размера столбца,
последние символы отделенные пробелом переносятся на 2ю строку
Т.е. нужен перенос только при редактировании содержимого ячейки?
нет. при отображении тоже нужно
Записан
Danila_Bagrofff
Гость
« Ответ #10 : Февраль 22, 2012, 08:04 »

Ну так, на всякий =) Тоже заморачивался над этим вопросом.
Помогло это:
Код:
qTblVwSearchDocs->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);

Но для очень большого количества строк работает совсем не быстро. Таблица постоянно подтормаживает.
Видимо, потому как сразу для всего хидера пересчитывает, а не для отображаемой части - что есть плохо.
Поэтому можно использовать что-то вроде:
Код:
 qTblVwSearchDocs->verticalHeader()->setResizeMode(QHeaderView::Interactive); //сбросим всем строкам отображение к стандартному
int num = qTblVwSearchDocs->rowAt(qTblVwSearchDocs->viewport()->y()+10); //первая отображаемая строка
    for(int i= num; i< num+100; i++)
       qTblVwSearchDocs->verticalHeader()->setResizeMode(i, QHeaderView::ResizeToContents); //100 отображаемых строк приведем в порядок, ну или же посчитайте сколько строк в текущий момент отображается
И при любом изменении отображаемой части обновляйте отображение строк.

Как-то так.

Может, правда, есть решение более толковое.....
Записан
Bepec
Гость
« Ответ #11 : Февраль 22, 2012, 08:12 »

Самым толковым помоему будет создание делегата, ведущего этот подсчёт и отображение Подмигивающий
Записан
Danila_Bagrofff
Гость
« Ответ #12 : Февраль 22, 2012, 08:59 »

Спорно. Будет ли это быстрее работать при очень больших таблицах? Или делегаты пресчитываются только отображаемые?
В любом случае - это извращенство. Жаль, что нет стандартных методов.
Записан
Bepec
Гость
« Ответ #13 : Февраль 22, 2012, 09:00 »

Делегат вызывается ТОЛЬКО для отображаемых ячеек. Подмигивающий

Яркий пример - мой месячной давности опыт с 10,000,000 кнопками Подмигивающий даж не тормозит.
Записан
Danila_Bagrofff
Гость
« Ответ #14 : Февраль 22, 2012, 16:50 »

тогда игра стоит свеч.
Спасибо. =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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