Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978

Выставить ширину QListWidget равной ширине самой длинной строки

12.10.2012, 14:24. Показов 4556. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не подскажете ли, как сделать ширину QListWidget равной ширине самой длинной строки.
Строки - простые тексты
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2012, 14:24
Ответы с готовыми решениями:

Сделать ширину TextView по ширине самой длинной строки
Здравствуйте, подскажите пожалуйста, как сделать, чтобы ширина TextView была по ширине самого длинного предложения в строках ? ...

Выровнять слова в строках по ширине самой длинной строки
1. Найти строку, содержащую наибольшее количество строк, вывести на экран монитора. 2. Выровнять слова в строках по ширине самой длинной...

Выровнять слова в строках по ширине самой длинной строки
найти ошибку. Выровнять слова в строках по ширине самой длинной строки #include <stdio.h> #include <string.h> #include...

10
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
12.10.2012, 15:27
Как то так.
C++ (Qt)
1
2
3
4
5
QListWidget list;
//...
QFontMetrics metr(list.font( ) );
QRect rect = metr.boundingRect("Длинный текст")
list.resize(rect.width()*1.15, list.height())
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.10.2012, 13:17  [ТС]
Dmitriy_M, Сделал все так как вы мне сказали
C
1
2
3
4
5
   QListWidget *list = MakeList(...);  // Это функция, создающая list
    // В ней анализируются длины строк и делается list->resize(w, list->height());
   wrjur(" width=%d", list->width()); // Все правильно, width = 79
   Ly->addWidget(list);  // Ly - это QHBoxLayot
   wrjur("width=%d", list->width()); // Опять все Ok - width = 79
Но отображается совсем не такой ширины, а значительно больше.
Более того, QListWidget-в - 2 штуки и шириной они должны быть разной!
А отображаются одинаковой!
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
13.10.2012, 15:46
Компоновщики (Layot) самостоятельно изменяют размеры виджетов
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.10.2012, 18:33  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Компоновщики (Layot) самостоятельно изменяют размеры виджетов
Что же делать? Нет ли каких соображений? Пружинки (AddStretch) вставлял - ноль внимания. Но если увеличиваю размер окна (просто потянув за край) - пружинки срабатывают. Вертикальные пружинки тоже работают (уменьшают вертикальный размер list). А вот уменьшить размер окна не получается.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
13.10.2012, 19:30
Вижу книжки читать не модно
QSizePolicy в руки.
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
14.10.2012, 14:55  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Вижу книжки читать не модно
QSizePolicy в руки.
Просто не пришло в голову, что надо смотреть именно в эту сторону. За ссылку спасибо! Хоть ангицкий - не мой ридный язык, попробую разобраться. Конечно же, все это относится к Size-полиции!
Кстати, там указана версия 4.7, а я ковыряюсь на 4.5 (была на диске, приложенном к Шлее). Это имеет значение?
Тем времени времени не терял и попробовал обернуть QListWidget в QGroopBox. list стал слушаться указанных ему размеров. Но введение "пружинок" приводит к совершенно неожиданным и странным результатам. Опять же, надо, видимо, в полицию обращаться.
Буду дальше лоб тереть...

Добавлено через 17 часов 59 минут
Все получилось!
Создал класс, унаследованный от QListWidget, в нем переопределил sizeHint() - все Ok!
Долго мучился из-за того, что не написал у sizeHint() const, в итоге его просто не было видно!
На всякий случай установил setSizePolicy(Fixed, Fixed)
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.01.2013, 18:34  [ТС]
Но оказалось все значительно проще. И не нужно ни sizeHint, ни QSizePolicy, ни унаследованных классов.
setFixedSize - вот и все
Спасибо всем, кто откликнулся.
А я пойду дальше - доку копать
0
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
11.01.2013, 00:53
Здравствуйте!

Dmitriy_M уже не в первый раз подкалывет лайоутами... Хотя по ним толкового
хелпа на РУССКОМ ЯЗЫКЕ и с КАРТИНКАМИ и примерами для меня пока НЕТ!!!
Хоть я и не знаток Qt, но тут присоветую (так говорит моя бабушка, не о Qt).
________________________________________ ___________________________
Теория(меньше базы):
Я не знаю где вычитал, но суть такая (для полиции может поможет):
Explanding = виджет будет "ну очень страсно" стемиться расширяться...
Prefered = виджет настроен расширяться, особенно если есть возможность...
Остальное тривиально. Вроде бы!!! "Пружинки" могут и не понадобиться...
________________________________________ ____________________________
Реализация:
Опишу для уже установленного виджета (не создаваемого динамически):
Кликаем на виджете и задаем ему "полицию" (интересное выражение), к примеру
Prefered для вертикали и горизонтали, зтем минимум и максимум ширине и высоте!
________________________________________ ____________________________
И, наконец, Фокас:
Кликаем на родителе виджета (это можен быть окно или фрэйм или табвиджет и т.д.)
и нажимаем "Ctrl+G" = прировнять по сетке, затем делаем то же самое его родителю!
Пока не подойдём к головному окну. Если виджетов много, то тогда берёмся за пужинки!
У созданных лайоутов руками редактируем смешные цифры "6" и "9", если есть желание!
Компилируем и запускаем. Если сделали "Ctrl+G" и головной форме=окну, то удивляемся!!!
________________________________________ ____________________________

Вот и все. Удачи!

------------------------------------------------------------------------------
Прежде чем пробовать, рекомендуется сделать резервную копию всего проекта!
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
12.01.2013, 22:45  [ТС]
Цитата Сообщение от _SASA_ Посмотреть сообщение
по ним толкового хелпа на РУССКОМ ЯЗЫКЕ и с КАРТИНКАМИ и примерами для меня пока НЕТ!!!
Ну кой чего есть уже у Шлее в начале 6-й главы и с картинками. И вот еще
http://doc.crossplatform.ru/qt/4.7.x/layout.html
Это надо читать очень внимательно, на что пока меня не хватает. Текучка, так ее и так! Это студентам хорошо, у них нет за плечами работающих живых проектов, которые надо все время исправлять, улучшать, делить как амеб. На то проекты и живые. Ну это я так - в жилетку.
По поводу доки на Layout-ты - да есть она. И с простейшими из них все более-менее понятно. Но не очень понятна "внутренность" их работы. Я, увы! воспитан на процедурном программировании (а когда я воспитывался, другого-то и не было). Все эти sizeHint, setPolicy (все-таки это наверное ПОЛИТИКА, а не МИЛЛИЦИЯ, да хрен редьки не слаще) как бы интуитивно понятны, а как они работают в самом деле (какие меняют внутренние переменные, на каких основаниях "ложат") - я не понимаю. В ссылочке, которую я вам дал, кой-чего есть об этом, но я, повторяю, пока не добрался.
Удачи и вам!

Добавлено через 25 минут

Не по теме:

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

0
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
13.01.2013, 01:47
Здравствуйте! Я тоже не знаток QT, ООП, патернов и др. извращений. Я из С.
И уж тем более я не для самоутверждения пишу, я вижу что тоже трудно понять.
Когда я начинал изучать лайоуты, рядом не было людей готовых мне помочь...
и я пошел по не верному пути (см. примеры). Вы меня здесь не поняли, мне жаль!
Я тоже эту тему смотрел на таких же примерах, для динамических виджетов!!!
Именно они и вводят в заблуждение. Примеров как эти, как по ссылке - куча.
Нет необходимости лайоуты постоянно создавать через new, а потом в них
закидывать готовые, либо созданные динамически, виджеты. В дизайнере всё
это делать гораздо проще. Можно все делать гораздо быстрее == мышкой (быстро)!
ЕСЛИ ВИДЖЕТЫ У ВАС ГОТОВЫЕ(уже расположены на форме), то достаточно
их выделить и в дизайнере выбрать = тип лайоута, и он сам сгенерится средством
разработки. На верхней панельке есть готовые предложения как их скомпоновать.
Уверяю, что если по такой схеме разбить на кусочки все обЪекты формы (их группы),
то все визуализации можно быстро скомпоновать на красиво изменяющие размеры!!!
Здесь уже без юмора и тоже в общих чертах! Думаю теперь будет понятно. Удачи!!!
________________________________________ ___________________________________
Я только хотел помочь, а не смеяться или хвастаться. И сарказма не было!!! Жаль!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2013, 01:47
Помогаю со студенческими работами здесь

Нужно выровнять по ширине самой длинной строки. Где ошибся?
Нужно выровнять по ширине самой длинной строки. Где ошибся? Помогите пожалуйста. #include <stdio.h> #include...

DBGrid: выставить ширину столбцов по ширине записанных в них данных
Добрый вечер форумчане! такой вопрос, есть некие данные в MySQL и есть BDGrid, как сделать что бы колонки в BDGrid были не по...

Как ширину одного из столбцов поля со списком сделать равной ширине столбца формы?
Здравствуйте! Подскажите пожалуйста, как ширину одного из столбцов поля со списком сделать равной ширине столбца формы? У меня в...

Переделать функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки и воспроизводила ее
Переделать головную функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки...

Дан файл, содержащий строки. Если третья строка не является самой длинной или самой короткой, то скопировать в новый
Я сделал половину, но здесь почему то max и min он выводит нули, следовательно он не может считать массив строк. Помогите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru