Михаил Сермяжко
Михаил Сермяжко9. Oktober 2019 04:39

Как в QML в ComboBox сделать выпадающий список по ширине текста

ComboBox

Добрый день.
Как в QML в ComboBox сделать выпадающий список по ширине самого длинного текста?

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

6
Evgenii Legotckoi
  • 9. Oktober 2019 05:13

Добрый день!

У ComboBox в Quick Controls 2 есть свойство delegate для выпадающенго меню. Нужно в нём настраивать ширину. Я думаю, что можно пройтись по всей модели, найти наиболее длинный текст, подсчитать необходимую ширину и задать эту ширину для делегата.

    t
    • 9. Oktober 2019 05:22

    Как пройтись по модели? Я не нашёл как это сделать? Получается нужно скрипт писать? В Qt Widgets есть свойств несколько для выравнивания ширины по макс значению, здесь ничего такого нет? Тем более, что делегат кроме текста может быть чем угодно. Нужно его видимо ещё правильно написать, чтобы выпадающий список автоматом расширился?

      Михаил Сермяжко
      • 9. Oktober 2019 05:27

      Нашел такого делегата, но у него почему текст не виден, и не могу понять как задать цвет текста.
      Помогите пожалуйста настроить этот делегат

                  delegate: ItemDelegate {
                   //width: comboBoxProfilOptions.width
                   text: text
                   //text: control.textRole ? (Array.isArray(comboBoxProfilOptions.model) ? modelData[comboBoxProfilOptions.textRole] : model[comboBoxProfilOptions.textRole]) : modelData
                   font.weight: comboBoxProfilOptions.currentIndex === index ? Font.DemiBold : Font.Normal
                   font.family: comboBoxProfilOptions.font.family
                   font.pointSize: comboBoxProfilOptions.font.pointSize
                   highlighted: comboBoxProfilOptions.highlightedIndex === index
                   hoverEnabled: comboBoxProfilOptions.hoverEnabled
                  }
      
        Evgenii Legotckoi
        • 9. Oktober 2019 05:28

        Да. Делегат можно написать как угодно, там и изображения могут быть и чёрт знает что.

        У ComboBox есть свойство model. Нужно обратиться к нему и через индекс пройтись по всем элементам, выбирая текст, или что-то там ещё у вас может быть, подсчитать предполагаемую максимальную длину, а потом задать ширину в делегате.
        Это как я себе это представляю.

          Evgenii Legotckoi
          • 9. Oktober 2019 05:29
          • (bearbeitet)

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

            Михаил Сермяжко
            • 9. Oktober 2019 06:04
            • (bearbeitet)

            Сделал так, но теперь не меняется CurrentIndex

                        delegate: ItemDelegate {
                            width: comboBoxProfilOptions.width
                            height: 25
                            highlighted: comboBoxProfilOptions.highlightedIndex === index
                            hoverEnabled: comboBoxProfilOptions.hoverEnabled
                            onClicked: {
                                comboBoxProfilOptions.currentIndex = index
                                comboBoxProfilOptions.t = text1
                                console.log("index:" + index)
                                console.log("text:" + text)
                            }
                            Rectangle{
                                anchors.fill: parent
                                border.width: 1
                                border.color: "black"
                                color: "#00000000"
                            }
            
                            Label{
                                x: 3
                                anchors.verticalCenter: parent.verticalCenter
                                width: parent.width
                                text: text1
                                font.pixelSize: comboBoxProfilOptions.font.pixelSize
                                //color: "red"
                            }
                        }
            

              Kommentare

              Nur autorisierte Benutzer können Kommentare posten.
              Bitte Anmelden oder Registrieren
              Letzte Kommentare
              ИМ
              Игорь Максимов5. Oktober 2024 07:51
              Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
              d
              dblas55. Juli 2024 11:02
              QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
              k
              kmssr8. Februar 2024 18:43
              Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
              Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
              EVA
              EVA25. Dezember 2023 10:30
              Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
              Jetzt im Forum diskutieren
              J
              JacobFib17. Oktober 2024 03:27
              добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
              JW
              Jhon Wick1. Oktober 2024 15:52
              Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
              КГ
              Кирилл Гусарев27. September 2024 09:09
              Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
              F
              Fynjy22. Juli 2024 04:15
              при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

              Folgen Sie uns in sozialen Netzwerken