BlinCT
2 мая 2020 г. 0:26

Распределение нескольких ListView в однмо обьекте

Все привет.
Пытаюсь сделать 2 листа с данными, примерно такое как на скриншоте что прикрепляю
Screenshot_20200501_201756.png Screenshot_20200501_201756.png

То есть это ректангл с 2 листами которые имеют нахвания каждый, внутри будут кнопки но я пока для протатипа текстовый обьект кинул.
И там идут прокрутки(но наверное нету смысла чтоыб они сразу были видны).
под листами 3 кнопки.
Подскажите, у меня что то все в одной куче получается, хотя вроде есл ия листы поместил в лайаут то обьекты должны по шириен растянутся.
Буду признателен за совет по коду.

  1. Rectangle
  2. {
  3. id: rootItem
  4.  
  5. anchors.fill: parent
  6.  
  7. color: "black"
  8.  
  9. ColumnLayout
  10. {
  11. id: rootColumn
  12.  
  13. RowLayout
  14. {
  15. id: rowList
  16.  
  17. anchors.fill: parent
  18.  
  19. Rectangle
  20. {
  21. id: rectLeft
  22.  
  23. ListView
  24. {
  25. id: leftList
  26.  
  27. Text {
  28. id: left
  29. text: qsTr("left")
  30. }
  31. }
  32. }
  33.  
  34. Rectangle
  35. {
  36. id: rectRight
  37.  
  38. ListView
  39. {
  40. id: rightList
  41.  
  42. Text {
  43. id: right
  44. text: qsTr("right")
  45. }
  46. }
  47. }
  48. }
  49.  
  50. RowLayout
  51. {
  52. id: rowButton
  53.  
  54. Button { text: "first" }
  55. Button { text: "second" }
  56. Button { text: "third" }
  57. }
  58. }
  59. }
2

Вам это нравится? Поделитесь в социальных сетях!

2
Evgenii Legotckoi
  • 4 мая 2020 г. 3:45
  • Ответ был помечен как решение.

Привет.
Сколько раз мне тебе повторять, что якоря anchors для Layout не работают, когда такой объект расположен внутри другого Layout, или работают на половину?
У тебя в debug должна была высыпаться вот такая ошибка

  1. qrc:/main.qml:24:13: QML RowLayout: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.

Нужно использовать Layout свойства.

Вот пример

  1. import QtQuick 2.12
  2. import QtQuick.Window 2.12
  3. import QtQuick.Controls 2.12
  4. import QtQuick.Layouts 1.12
  5.  
  6. Window {
  7. visible: true
  8. width: 640
  9. height: 480
  10. title: qsTr("Hello World")
  11.  
  12. Rectangle
  13. {
  14. id: rootItem
  15. anchors.fill: parent
  16. color: "whitesmoke"
  17.  
  18. ColumnLayout
  19. {
  20. id: rootColumn
  21. anchors.fill: parent
  22.  
  23. RowLayout
  24. {
  25. id: rowList
  26. Rectangle
  27. {
  28. id: rectLeft
  29. Layout.fillWidth: true
  30. ListView
  31. {
  32. id: leftList
  33. Text {
  34. id: left
  35. text: qsTr("left")
  36. }
  37. }
  38. }
  39.  
  40. Rectangle
  41. {
  42. id: rectRight
  43. Layout.fillWidth: true
  44.  
  45. ListView
  46. {
  47. id: rightList
  48. Text {
  49. id: right
  50. text: qsTr("right")
  51. }
  52. }
  53. }
  54. }
  55.  
  56. RowLayout {
  57. id: rowButton
  58. Button { text: "first" }
  59. Button { text: "second" }
  60. Button { text: "third" }
  61. }
  62. }
  63. }
  64. }
  65.  

Далее

    BlinCT
    • 4 мая 2020 г. 4:34

    Если честно то чет я постоянно про отсутствие якорей в лайаутах забываю, ты прав.

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь