|
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 15
|
|
QTreeWidget. Как программно узнать, что появился horizontalScrollBar?03.12.2018, 14:58. Показов 2533. Ответов 35
Здравствуйте. Как программно узнать, что появился horizontalScrollBar? Благодарю за любую информацию.
0
|
|
| 03.12.2018, 14:58 | |
|
Ответы с готовыми решениями:
35
Как узнать что внутри атласа программно? Как программно узнать, что модем - COMовский?
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 04.12.2018, 20:15 | |||
|
Да, можно предложить использовать совсем другие подходы. И вообще, бросить Qt на фиг и перейти на WinForm. Или на WinAPI. А хотелось бы увидеть решения именно по поставленной задачи. Или после долгого совместного изучения вопроса сказать друг другу - "Мы смогли придумать только вот такие костыли". А предлагать какие-то другие подходы? Вот это уже смешно, если вы даже догадаться не можете, откуда эта задача взялась. Да, жалко бывает людей. Но еще жальче - слезы лить на ихнюю глупость.
0
|
|||
|
693 / 465 / 162
Регистрация: 01.10.2015
Сообщений: 1,274
|
|||
| 04.12.2018, 20:25 | |||
0
|
|||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||
| 04.12.2018, 20:30 | ||
|
Вопросов задаётся много, и не всегда они требуют именно такого решения, потому что задающий может не разбираться толком в предмете. И вообще отчего такой повышенный интерес к этой теме? Когда я спрашивал про заголовок, все молчали.
0
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||||
| 04.12.2018, 20:46 | |||||
|
во-вторых, провоцирует балабольство. И уже на вопрос давно плевать, мало ли их у нас! А вот раздражение не оставляет... Ладно. Пойду, выпью рюмочку. Может помягчает.. А может - и наоборот![]()
0
|
|||||
| 04.12.2018, 20:48 | |
|
0
|
|
| 04.12.2018, 20:57 | |
|
0
|
|
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
|
|
| 05.12.2018, 11:16 | |
|
Байт,
Не по теме: есть еще один вариант. Можно позвонить одному из разработчиков Qt, попросить подключиться к нашей машине и мониторить экран. Как только появится скроллбар - заорать нам об этом в ухо. Не благодарите.
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 15
|
|
| 05.12.2018, 23:53 [ТС] | |
|
Приношу извинения, что долго не отвечал. После опубликования вопроса некоторое время ответов не было, и я решил, что уже и не будет, поэтому не заходил.
Вы правы, данная задача не является решением поставленной задачи, а носит лишь один из возможных вариантов, который, скорее всего, является «костылём», но другого решения не смог придумать из-за нехватки знаний. Если вам интересно, я опишу собственно задачу. Имеется класс, наследуемый от QMainWindow, у которого центральным виджетом является класс, наследуемый от QTabWidget. В него мы добавляем класс, наследуемый от QTreeWidget. Из-за того, что функционала QTreeWidgetItem не хватает, используется setItemWidget(), в который помещается QWidget(расположение элементов приведено в прикреплённой картинке 1). Собственно задача: при уменьшении ширины окна, когда тексту не хватает место в ячейке для полноценного отображения(картинка 2) высота ячейки должна увеличиваться и QLabel правильно отображаться. Над данной задачей я долго просидел. Стандартных методов решения не нашёл. Все указывают на делегаты, однако я смог решить задачу при условии, что используется QTreeWidgetItem с одним текстом, но получилось слишком громозко и маловероятно, что придуманное решение не очередной «костыль». Когда же с толкнулся с задачей по сложней, описанной выше, зашёл в тупик. Буду благодарен за любую информацию. p.s. Каждый день буду посещать тему.
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 06.12.2018, 00:47 | |
|
Phantom31, в глубь твоей задачи влезть не смог, но давай попробуем поставить твой стартовый вопрос более общо.
Есть класс, производный от QScrollArea. Это может быть QTreeWidget, QListWidget, да хоть черт в ступе, не суть. И нам хотелось бы отловить момент появления у него скроллбаров. Зачем? Ну хотя бы, чтобы изменить по возможности его SizeHint. Ведь юзер наш капризен до невозможности. Ему трудно понять, почему при наличии места на панели, ему предлагают маленькое окошко с прокруткой. (Мне, кстати, это тоже трудно понять) У меня лично вопрос такой. Есть небольшой (8-10 вариантов) выбор. И его надо поместить в QListWidget. Конечно, те, кто очень хочет найти порочность в самом решении, тут же мне предложат QComboBox. Но этот тупой юзер хочет именно List. Спорить с ним - себе дороже. Да и без зарплаты можно остаться. И никакой ЕСПЧ не спасет ![]() Ладно, для текущего набора возможностей я все подсчитал (тоже, кстати, а почему бы самому Qt-Api этого не сделать?). Но фишка в том, что этот неугомонный юзер вполне может добавить в этот список еще пару возможностей. И увидит нелепые (с его точки зрения) скроллбары. И вот именно в момент их появления я и мог бы попытаться к своему юзверю подластиться. Phantom31, вполне возможно, что наши проблемы - разные. И вам и мне, может быть можно их решить на более высоком уровне. Но ваш вопрос отнюдь не праздный. ЗЫ. Если я неуклюже объяснил свою задачу, пусть меня простят. Это вообще штука непростая. Но я старался.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 06.12.2018, 09:29 | |
|
Phantom31, ты ясности не добавил. Для чего там QTreeeView и где тот самый ScrollBar?
0
|
|
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
|
|
| 06.12.2018, 13:04 | |
|
Видимо бар появится, если еще сильнее сжать окно по горизонтали. Содержимое ужмется настолько, что по высоте перестанет помещаться - появится вертикальный бар. Аналогично для высоты, если настроить. Сейчас, судя по скринам, там содержимое просто обрезается(нужны настройки переносов).
Я решал нечто похожее, но не горжусь своим решением(делал в первый раз и уверен, что можно сделать лучше). Мое решение в итоге свелось к НЕ использованию наследников QAbstractScrollArea вовсе, ибо там не было возможности ресайзить его контент-виджет самостоятельно. Поэтому я создал свой собственный виджет, который содержал свой контент-виджет и обычный бар, размерами и появлением которых я управлял при ресайзе основного виджета(или контента у контент-виджета, да). Основные же проблемы были при ресайзе содержимого контент-виджета, если кто-то ресайзит окно (и вот именно этой работой я не горжусь). Но сам подход советую именно потому, что проблема с доступом на изменение параметров контент-виджета QScrollArea имеет место быть (я не нашел решения; кто подскажет - буду рад). P.S. Главное то я и забыл. Т.к. ты теперь сам будешь ресайзить контент-виджет и отвечать за показ скролла - проблема по сути уйдет.
1
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||
| 06.12.2018, 13:20 | ||
|
Может, проще запретить уменьшение размера?
0
|
||
|
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 15
|
|
| 06.12.2018, 14:50 [ТС] | |
|
nmcf , вы правы, QTreeView здесь не нужен. На текущий момент для меня самое важное понять, как правильно сделать увеличение высоты ячейки для правильного отображения QLabel, ведь что с QListView, что с QWidget с QVBoxLayout’ом проблема не решается. Есть идея полностью сделать всё фиксированным и вручную вычислять значения ширины и высоты, но я считаю это «костылём».
«где тот самый ScrollBar?» Если я вас правильно понял, предоставляю вложение, иначе поправьте меня, и я предоставлю нужные данные. В resizeEvent() я использую resizeColumnToContents(0) для появления скрола. Если появляется горизонтальный скрол, значит, текст перестаёт помещаться в QLabel и его часть находится за пределами видимой области. Именно в этом случае хотел увеличивать высоту ячейки ручным способом. Но пытаюсь найти способ сделать это методами Qt без использования вышеописанных способов.
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 15
|
|
| 07.12.2018, 01:52 [ТС] | |
|
Нашёл решение своей проблемы. Если кому интересно, пишите. Запрещено выкладывать ссылки на сторонние ресурсы.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 07.12.2018, 12:27 | |
|
Суть-то в чём?
0
|
|
|
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 15
|
|
| 07.12.2018, 18:02 [ТС] | |
|
В прошлом сообщении я не уточнил, утомление сказалась, поэтому начну с упущенного. По появлению ScrollBar я информацию не нашёл, но, гуляя на просторах интернета, наткнулся на сайт, где подробно объясняется моя основная проблема: изменение высоты ячейки для правильного отображения текста.
По этому вопросу суть в следующем: переопределяем heightForWidth(int) В resizeEvent(QResizeEvent* event) отлавливаем изменение, получаем высоту с помощью heightForWidth(int), устанавливаем setFixedHeight(height) и updateGeometry(). Теперь буду тестить. Дальше видно будет.
0
|
|
| 07.12.2018, 18:02 | |
|
Как узнать уровень узла в QTreeWidget Как программно узнать, что изображение загружено в пикчуребокс? FlowPlayer. Как программно узнать, что видео загрузилось и готово к просмотру? Узнать количество веток в QTreeWidget Как сделать что бы по нажатию на кнопку появился pictureBox1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|