Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 15

QTreeWidget. Как программно узнать, что появился horizontalScrollBar?

03.12.2018, 14:58. Показов 2533. Ответов 35
Метки qt (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Как программно узнать, что появился horizontalScrollBar? Благодарю за любую информацию.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2018, 14:58
Ответы с готовыми решениями:

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

Как программно узнать, что модем - COMовский?
как программно узнать что модем комовский. Т.е что модем подключен к com порту. вот как это выяснить програмно ? ответ погугли не прокатит...

Узнать, что на выходе звковой карты появился звук
Как программно узнать, что на выходе звуковой карты появился звук? В какую сторону копать? MMSystem.pas (winmm.dll), SoundDirect...

35
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.12.2018, 20:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 0x90h Посмотреть сообщение
А если серьезно, то ТСу следовало бы уточнить задачу,
Если серьезно. А чего тут уточнять? Вопрос есть, четко поставлен, и он интересен. В том числе и мне. И если бы был внятный, вразумительный ответ, я бы с удовольствием использовал бы его в своей непосредственной работе. Могу, если кому уж прям так хочется, привести конкретный пример.
Да, можно предложить использовать совсем другие подходы. И вообще, бросить Qt на фиг и перейти на WinForm. Или на WinAPI. А хотелось бы увидеть решения именно по поставленной задачи. Или после долгого совместного изучения вопроса сказать друг другу - "Мы смогли придумать только вот такие костыли". А предлагать какие-то другие подходы? Вот это уже смешно, если вы даже догадаться не можете, откуда эта задача взялась.
Цитата Сообщение от 0x90h Посмотреть сообщение
тема идет по разряду "Юмор"
Да. Там где появляются совершенно неадекватные ответы. Пальцем показывать не буду. А что ж делать? Плакать, что ли? Да, жалко бывает людей. Но еще жальче - слезы лить на ихнюю глупость.
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
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.12.2018, 20:46
Цитата Сообщение от 0x90h Посмотреть сообщение
Часто встречаются темы, когда предполагаемый ТС'ом путь решения вовсе таковым не является, поэтому народ и уточняет, возможно существует альтернатива, куда более подходящая для решения, чем исходный вариант.
Опять двадцать пять! Пути ТС не предлагал. Он спросил. Конкретно. Лично я пытаюсь конкретно попытаться на него ответить И говорю, что адекватного ответа не знаю. Он же нас не о пути спрашивает. А о простом вопросе. А о пути - это все "Дао"...
Цитата Сообщение от 0x90h Посмотреть сообщение
Например, откуда?
Не знаю.
Цитата Сообщение от nmcf Посмотреть сообщение
то и реализовал бы сам.
Силенок маловато. Но если было бы реализовано, с удовольствием бы воспользовался. О чем уже говорил.
Цитата Сообщение от nmcf Посмотреть сообщение
И вообще отчего такой повышенный интерес к этой теме?
во-первых, мой интерес уже обозначен в предыдущем абзаце.
во-вторых, провоцирует балабольство. И уже на вопрос давно плевать, мало ли их у нас! А вот раздражение не оставляет...
Ладно. Пойду, выпью рюмочку. Может помягчает.. А может - и наоборот
0
04.12.2018, 20:48

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Пойду, выпью рюмочку.
Серьёзно, что ли?

0
04.12.2018, 20:57

Не по теме:

Цитата Сообщение от nmcf Посмотреть сообщение
Серьёзно, что ли?
А то нет! Такими вещами не шутят!:)

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. Каждый день буду посещать тему.
Миниатюры
QTreeWidget. Как программно узнать, что появился horizontalScrollBar?   QTreeWidget. Как программно узнать, что появился horizontalScrollBar?  
0
Диссидент
Эксперт C
 Аватар для Байт
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
Цитата Сообщение от Горбаг Посмотреть сообщение
Содержимое ужмется настолько, что по высоте перестанет помещаться
Так он же вроде бы и увеличивает высоту, чтобы всё поместилось. А даже если ScrollBar появился, что предполагается делать-то при этом?
Может, проще запретить уменьшение размера?
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 без использования вышеописанных способов.
Миниатюры
QTreeWidget. Как программно узнать, что появился horizontalScrollBar?  
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2018, 18:02

Как узнать уровень узла в QTreeWidget
Не нашел подходящей функции Есть QTreeWidgetItem. вставленный в дерево. Как узнать на каком уровне вложенности он находится. Или только...

Как программно узнать, что изображение загружено в пикчуребокс?
Доброго всем времени суток! Вопрос в названии темы.

FlowPlayer. Как программно узнать, что видео загрузилось и готово к просмотру?
Добрый день. Задача - нужно очень быстро менять видео в flow-плеере. Т.е. показывает видео с одного потока, а потом (без задержки) сразу...

Узнать количество веток в QTreeWidget
Есть QTreeWidget c 3 уровнями QTreeWidgetItem. Вопрос: как узнать, есть ли в дереве ветки 3-го уровня? После создания дерева, вызов...

Как сделать что бы по нажатию на кнопку появился pictureBox1
ребята подскажите пожалуйста как сделать что бы по нажатию на кнопку появился pictureBox1 (времени мало не успеваю сам разобраться :(...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
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. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru