Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/58: Рейтинг темы: голосов - 58, средняя оценка - 4.86
16 / 16 / 3
Регистрация: 05.08.2012
Сообщений: 89
1

QTableView перенос строк в ячейках

06.08.2013, 19:46. Показов 11907. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Незамысловатый эффект, но никак не придумаю, как его просто реализовать, в гугле пока не нашел.
Нужно ровно то, что в названии темы -- чтобы QTableView (решения для QTableWidget тоже подойдут, я поправлю делегаты и/или модели) в ячейках был возможен перенос строк, хотя бы 2 строки.

По факту очень надо, чтобы в паре столбцов надписи шли одна под другой парами в ячейках. Можно поколдовать с setSpan(), но тогда будет не очень удобно грузить данные из базы скорее всего, да и эта хрень у меня для заголовка уже как-то не очень заработала.

Знаю про делегаты, но одного редактора мне явно мало. Если я назначу ячейкам особо извращенские виджеты, то опять же моей проблемой станет, как я туда значения пихать стану (взаимодействие с видом хорошо так усложнится).

Я что-то не понимаю? Есть несложный способ?
Буду благодарен за советы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2013, 19:46
Ответы с готовыми решениями:

QTableView/QTableWidget drag drop перенос строк и ячеек
Вопросище, никак не иначе. Столкнулся с тем, что реализация переноса выделения строк ячеек да и...

Создать QGridLayout в ячейках таблицы QTableView
Необходимо в ячейках таблицы QTableView создать сетку QGridLayout, в которой размещены лейблы QLable

Перенос строк в ячейках MSFlexGrid
Здравствуйте, может кто нибудь знает как в MSFlexGrid сделать так что бы слова, непомещающиеся в...

DataGrid: перенос строк в ячейках с AutoGenerateColumns
Как можно сделать перенос строки в ячейках DataGrid? Столбцы генерируются автоматически, поэтому...

6
99 / 99 / 22
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
16.01.2014, 18:30 2
Интересно, Genco, - Вы решили свой вопрос?)
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
16.01.2014, 18:58 3
C++ (Qt)
1
 tablWidget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
16.01.2014, 18:59 4
Не совсем понятно при чем тут setSpan. Но ведь обычный перенос строк есть из коробки.
0
16 / 16 / 3
Регистрация: 05.08.2012
Сообщений: 89
22.01.2014, 01:09  [ТС] 5
Да нет, я просто очень криво описал то, что мне нужно. ResizeToContents как раз не подходит, я про эту фичу знаю, естественно. Но требовалось при FixedRow переносить текст по строкам, желательно заданным образом т.е. "включить поддержку \n внутри ячеек столбца".

Не по теме:

Очень нужен был эффект, чтобы я мог контролировать, что именно в первой строке ячейки, а что во второй. Так криво задача стояла, что именно в одну ячейку выводились и читались спаренные данные, т.е. автоматический перенос первой строки получался нежелательным, появлялась необходимость либо в костыле с сепаратором, либо -- то, что я так сумбурно пытался описать (сепаратор = \n), что изящнее.



---

В общем, вопрос решил созданием кастомного делегата, чего и пытался избежать, а позже -- переформулированием задачи, если честно =)
0
99 / 99 / 22
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
27.05.2014, 22:57 6
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Не совсем понятно при чем тут setSpan. Но ведь обычный перенос строк есть из коробки.
"Из коробки" - это как?

Не по теме:

Можно для тех кто в танке еще раз?)

0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
01.03.2019, 06:04 7
Товарищи , по этой же теме - не получается перенести.
создал слот:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 ui->tableView->reset();
  QString s;
  QStandardItemModel *model=new QStandardItemModel;
  QStandardItem *item;
  //заголовок столбцов
  QStringList horizontalHeader;
  horizontalHeader.append("Дата");          //1
  horizontalHeader.append("Предприятие");   //2
  horizontalHeader.append("ЛПУ");           //3
  horizontalHeader.append("Стац.№");        //4
  horizontalHeader.append("СНЭ");           //5
  horizontalHeader.append("ППР");           //6
  horizontalHeader.append("Гарантия");      //7
  horizontalHeader.append("Событие");       //8
  //Заголовки строк
  QStringList verticalHeader;
  for(int i=1;i<=30;i++)
    {
    verticalHeader.append(QString::number(i) );
    }
  model->setHorizontalHeaderLabels(horizontalHeader);
  model->setVerticalHeaderLabels(verticalHeader);
 
         item=new QStandardItem(QString(s));
         model->setItem(i-1,1,item);
 
         item=new QStandardItem(QString(str.mos_1[i].LPU));
         model->setItem(i-1,2,item);
 
         item=new QStandardItem(QString(QString::number(str.mos_1[i].stan_number) ));
         model->setItem(i-1,3,item);
 
         item=new QStandardItem(QString(QString::number(str.mos_1[i].CNI) ));
         model->setItem(i-1,4,item);
 
         item=new QStandardItem(QString(QString::number(str.mos_1[i].PPR) ) );
         model->setItem(i-1,5,item);
 
         item=new QStandardItem(QString(QString::number(str.mos_1[i].garantia)));
         model->setItem(i-1,6,item);
 
         item=new QStandardItem(QString(str.mos_1[i].opisanie) );
         model->setItem(i-1,7,item);
 
        }
 
  ui->tableView->setModel(model);
  QHeaderView *header=ui->tableView->horizontalHeader();
  header->setSectionResizeMode(0,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  header->setSectionResizeMode(1,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  header->setSectionResizeMode(2,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  header->setSectionResizeMode(3,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  header->setSectionResizeMode(4,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  header->setSectionResizeMode(5,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  header->setSectionResizeMode(6,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  //header->setSectionResizeMode(7,QHeaderView::ResizeToContents);// ширина столбца по содержимому
  //ui->tableView->verticalHeader()->setSectionResizeMode(7,QHeaderView::ResizeToContents);
  ui->tableView->setColumnWidth(7, 300); // задаем фиксированную ширину столбца
  ui->tableView->setWordWrap(true);
на выходе получается такая штука как на картинке.
А я пытаюсь сделать, что там был перенос текста, как вот тут:
Подскажите пожалуйста куда копать в настройках кода..
Миниатюры
QTableView перенос строк в ячейках   QTableView перенос строк в ячейках  
0
01.03.2019, 06:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2019, 06:04
Помогаю со студенческими работами здесь

Перенос по словам в объединённых ячейках
Доброго времени суток всем! При уменьшении ширины столбца в Excel, содержащего ячейку, полученную...

DBGrid перенос слов в ячейках
Здравствуйте! Не могу разобраться, как сделать перенос слов в ячейках DBGrid. Нужно отображать...

Перенос текста в ячейках StringGrid
Нашел дельфиский код c использованием API procedure TForm1.StringGrid1DrawCell(Sender: TObject;...

Перенос текста в объединенных ячейках
Добрый день, выручайте) Написал код, который передает данные из программы в Excel .h ...

Перенос слов в ячейках StringGrid'a
Необходимо настроить перенос слов в ячейках таблицы.... Гугл, как и CYberForum выдает массу...

Перенос слов в ячейках SourceGrid
Кто работал с SourceGrid подскажите пожалуйста как реализовать перенос слов и выравнивание в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru