LINUX.ORG.RU

Qt и метод QString::arg(.....). Неровное форматирование

 arg, ,


0

1

В программе использую QListWidget, где элементы формирую с помощью QString::arg()

Проблема состоит в том, что несмотря на то, что я задаю при формировании строки ширину поля, всё равно конечная длина строки (а вследствии и само представление строки) получается разными. Вот пример формирования строк

fmtStr = QString("%1   |   %2   |   %3")
                .arg(this->id, -5)
                .arg(this->name, -40)
                .arg(state, -20);

id — это qint16, name и state — QString. В зависимости от длины name, получаю в итоге разную по длине конечную строку, и соответственно мои вертикальные разделители ( те, что | ) не совпадают. Подскажите, как исправить ситуацию? Неужели только использовать QString::sprintf()?

Чувак, может тебе просто нужна таблица?

Pavval ★★★★★
()

начнем с того, что шрифты не моноширинные.

x0r ★★★★★
()

Твой путь не верен, юзай QTableView.

panter_dsd ★★★★
()

Ты бы хоть пример привёл

Похоже, у тебя одно из полей вылезает за указанные пределы ширины.

schizoid ★★★
()
Ответ на: комментарий от GreenBag

Оно же может принимать больше одного параметра (строкового по крайней мере).

А вообще, после предыдущей замены не может получиться %цифра какая-нибудь с интересными эффектами?

Deleted
()

Забыл сразу отписаться — проблема решена, спасибо подсказавшим. Всё таки было просто — шрифт не моноширинный и все тут. Поэтому, после того, как выбран был DejaVu Sans Mono все стало ок.

Теперь вот думаю, как бы его в ресурсы внедрить, в доке пишут что без fontconfig на Linux не заработает...

GreenBag ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.