Tengo un archivo .qml con un componente 2 pasos arriba en la ruta de mi proyecto porque quiero tener una carpeta de componentes arriba de muchos proyectos para ser compartida por algunos de estos. Así que en mi main.qml hago:
import 'qrc:/../../components'
Eso funciona y puedo usar mi componente qml desde el archivo. Sin embargo, en la vista de diseño , recibo la advertencia:
found not working imports: ...<file and import line number where the import is> "qrc:/../../components": no such directory
Muchas otras cosas que probé hacen que el proyecto no se compile o arroje un error en tiempo de ejecución.
Prueba 1: import "qrc:/" : error de tiempo de compilación: Unknown component. (M300) . Tiene sentido ya que el componente está en una ruta anterior.
Trial2: import './../../components' : error de tiempo de ejecución: import "./../../components" has no qmldir and no namespace .
También intenté poner un archivo qmldir en mi carpeta de componentes donde está mi componente con el texto "MyComponent MyComponent.qml" como se explica en Importación de directorios de documentos QML
Aparte de la advertencia, todo funciona bien. Las compilaciones del proyecto, las ejecuciones y los cambios en el componente se muestran cuando trabajo en la vista de diseño.
información:
-> el recurso del componente se agrega al archivo de recursos .qrc y el archivo existe (el proyecto funciona)
-> QtQuick versión QtQuick 2.9
-> Qt Creator 4.15.2 Basado en Qt 5.15.2
¿Cómo me deshago de la advertencia?
Editar: también intenté seguir los pasos de esta respuesta sin éxito.
Agregando el contenido de mi archivo .qrc:
<RCC> <qresource prefix="/"> ...<other not relevant resources> <file>../../components/MyComponent.qml</file> </qresource> </RCC>Captura de pantalla de la advertencia:
Agregar un alias para el archivo en su .qrc debería resolver el problema, así:
<file alias="MyComponent.qml">../../components/MyComponent.qml</file>y luego para su declaración de importación simplemente:
import "qrc:/"El alias debe resolver cualquier problema de ruta relativa que esté causando que el diseñador arroje la advertencia.