Russian Qt Forum

Qt => Вопросы новичков => Тема начата: chu от Март 09, 2011, 23:36



Название: QTableView несколько строк в 1 ячейку
Отправлено: chu от Март 09, 2011, 23:36
Как записать?


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Пантер от Март 09, 2011, 23:39
Может ты хочешь перенос строк в ячейке?


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: chu от Март 10, 2011, 00:03
Может ты хочешь перенос строк в ячейке?
именно это)


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Archa4 от Март 11, 2011, 12:00
QLabel label = new QLabel;

label->setWordWrap(true);


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Пантер от Март 11, 2011, 12:07
view->setWordWrap (true);


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: GreatSnake от Март 11, 2011, 13:13
Цитировать
view->setWordWrap (true);
Чего-то мне кажется, что автору нужно что-то другое  :), т.к.
Цитировать
This property is true by default.


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Пантер от Март 11, 2011, 13:21
В последнее время что-то с телепатией туго - весна сказывается, поэтому воспринимаю буквально.


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: chu от Март 11, 2011, 17:45
Цитировать
view->setWordWrap (true);
Чего-то мне кажется, что автору нужно что-то другое  :), т.к.
Цитировать
This property is true by default.
да, другое.
идеально было бы в DisplayRole модели прописать что-то типа:
(если длина строки > заданой длины){
записать в две строки
}
я замечал, что когда вбиваешь текст, который чуть длинее размера столбца,
последние символы отделенные пробелом переносятся на 2ю строку (без resizeColumnsToContents()),
м.б. это свойство как-то можно изменить...


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: GreatSnake от Март 11, 2011, 17:52
Цитировать
я замечал, что когда вбиваешь текст, который чуть длинее размера столбца,
последние символы отделенные пробелом переносятся на 2ю строку
Т.е. нужен перенос только при редактировании содержимого ячейки?


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: chu от Март 16, 2011, 14:49
Цитировать
я замечал, что когда вбиваешь текст, который чуть длинее размера столбца,
последние символы отделенные пробелом переносятся на 2ю строку
Т.е. нужен перенос только при редактировании содержимого ячейки?
нет. при отображении тоже нужно


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Danila_Bagrofff от Февраль 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 отображаемых строк приведем в порядок, ну или же посчитайте сколько строк в текущий момент отображается
И при любом изменении отображаемой части обновляйте отображение строк.

Как-то так.

Может, правда, есть решение более толковое.....


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Bepec от Февраль 22, 2012, 08:12
Самым толковым помоему будет создание делегата, ведущего этот подсчёт и отображение ;)


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Danila_Bagrofff от Февраль 22, 2012, 08:59
Спорно. Будет ли это быстрее работать при очень больших таблицах? Или делегаты пресчитываются только отображаемые?
В любом случае - это извращенство. Жаль, что нет стандартных методов.


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Bepec от Февраль 22, 2012, 09:00
Делегат вызывается ТОЛЬКО для отображаемых ячеек. ;)

Яркий пример - мой месячной давности опыт с 10,000,000 кнопками ;) даж не тормозит.


Название: Re: QTableView несколько строк в 1 ячейку
Отправлено: Danila_Bagrofff от Февраль 22, 2012, 16:50
тогда игра стоит свеч.
Спасибо. =)