Size: a a a

2021 April 03

AS

Anatoly Shirokov in Qt
В линуксе я подсел на appimage, все свое ношу в бандле, собранном appimage
источник

AS

Anatoly Shirokov in Qt
Никакого влияние извне на приложение, и никакого влияния на среду со стороны приложения. Полная изоляция
источник

м

мыши in Qt
простите за странный вопрос, а есть ли в qml аналог приватной декларации, то есть, то же самое, что делает
import ControlImpl
но чтобы этот ControlImpl не болтался в отдельном файле и его можно было бы написать в текущем, и он не экспортировался из текущего модуля?
источник

AS

Anatoly Shirokov in Qt
мыши
простите за странный вопрос, а есть ли в qml аналог приватной декларации, то есть, то же самое, что делает
import ControlImpl
но чтобы этот ControlImpl не болтался в отдельном файле и его можно было бы написать в текущем, и он не экспортировался из текущего модуля?
Вы имеете ввиду inline определение:

Item {
  Component {
     id: controlImpl
     Item {
     }
  }
}
?
источник

м

мыши in Qt
не совсем, скорее
ControlImpl {
...
}

Item {
  ControlImpl {... }
  ControlImpl {... }
}
источник

AS

Anatoly Shirokov in Qt
мыши
не совсем, скорее
ControlImpl {
...
}

Item {
  ControlImpl {... }
  ControlImpl {... }
}
ну, я об этом же:
Window {
   width: 640
   height: 480
   visible: true
   title: qsTr("Hello World")
   Component {
       id: controlImpl
       Rectangle {
           width: 100
           height: 20
       }
   }

   ColumnLayout {
       anchors.fill: parent
       Loader {
           sourceComponent: controlImpl
           onLoaded: item.color = "red"
       }
       Loader {
           sourceComponent: controlImpl
           onLoaded: item.color = "green"
       }
   }
}
источник

AS

Anatoly Shirokov in Qt
в qml 6, по-моему, более удобное появилось, но меня склероз подводит, не вспомнить
источник

м

мыши in Qt
таким образом разве сам Component не будет торчать в Window?
источник

AS

Anatoly Shirokov in Qt
а как вы его достанете?
источник

м

мыши in Qt
ну всмысле он создастся и нарисуется
источник

AS

Anatoly Shirokov in Qt
Component не будет рисоваться
источник

AS

Anatoly Shirokov in Qt
он всего лишь содержит определение, отрисует его Loader
источник

AS

Anatoly Shirokov in Qt
ну, вот, создадим MyItem.qml:
import QtQuick 2.0
import QtQuick.Layouts 1.12

Item {
   Component {
       id: controlImpl
       Rectangle {
           width: 100
           height: 20
       }
   }

   ColumnLayout {
       anchors.fill: parent
       Loader {
           sourceComponent: controlImpl
           onLoaded: item.color = "red"
           Layout.fillWidth: true
           Layout.fillHeight: true
       }
       Loader {
           sourceComponent: controlImpl
           onLoaded: item.color = "green"
           Layout.fillWidth: true
           Layout.fillHeight: true
       }
   }
}

потом используем его в main.qml:
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Layouts 1.12

Window {
   width: 640
   height: 480
   visible: true
   title: qsTr("Hello World")

   MyItem {
       anchors.fill: parent
   }
}
источник

AS

Anatoly Shirokov in Qt
никто из MyItem не достанет определение controlImpl, если вы это не позволите
источник

AS

Anatoly Shirokov in Qt
или я не понял все же вопроса?
источник

AS

Anatoly Shirokov in Qt
Component QML можно описать inline, как мы сделали выше, так в отдельном документе. Inline определения используют для локальных компонентов, по типу делегатов для ListView или для Loader-ов. Без специальных усилий inline компоненты не будут видны клиенту.
источник

AS

Anatoly Shirokov in Qt
Поэтому inline определение вполне сойдет за приватную декларацию
источник

м

мыши in Qt
да, все верно, спасибо
источник

МВ

Макс Воробьев... in Qt
Anatoly Shirokov
никто из MyItem не достанет определение controlImpl, если вы это не позволите
в теории можно неявно вытащить через default property
источник

AS

Anatoly Shirokov in Qt
Макс Воробьев
в теории можно неявно вытащить через default property
что за зверь?
источник