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

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

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

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

Сообщений: 5877


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


Просмотр профиля 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

Сообщений: 5877


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


Просмотр профиля 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

Сообщений: 5877


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


Просмотр профиля 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.026 секунд. Запросов: 20.