Russian Qt Forum
Ноябрь 22, 2024, 23:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [решено]Использование своих компонентов  (Прочитано 5045 раз)
Kunashir
Гость
« : Ноябрь 24, 2011, 22:20 »

Добрый вечер.
Создаю в креатор приложение QML, добавляю новый файл, в котором хочу описать некий объект.
Так вот ни как не получается сделать, так чтобы объект из второго файла, можно было увидеть в основном.
И как сделать чтобы объекты в креаторе отображались в "библиотеки", если переключаться в режим дизайнера.

Спасибо.
« Последнее редактирование: Ноябрь 25, 2011, 10:40 от Kunashir » Записан
Kunashir
Гость
« Ответ #1 : Ноябрь 25, 2011, 08:57 »

В http://developer.qt.nokia.com/wiki/GettingStartedQMLRussian#3f6f8cc9beaffd1d806d115a1816fcee
написано:   
import Qt 4.7                      //импортируем модуль Qt QML
import "folderName"                //импортируем содержимое папки
import "script.js" as Script       //импортируем код из файла Javascript, назовем этот код именем Script

Представленный выше код показывает, как можно использовать ключевое слово import. Это необходимо для того, чтобы использовать файлы JavaScript или QML, которые расположены в другом каталоге. Так как файл Button.qml находится в той же папке, что и файл FileMenu.qml, то у нас нет необходимости импортировать файл Button.qml для работы с ним.

У меня два файла в одной папке, вот код:
main.qml
Код:
import QtQuick 1.0


Rectangle {
    width: 360
    height: 360
    Text {
        text: "Hello World"
        anchors.centerIn: parent
    }
    MouseArea {
        x: 0
        y: 0
        width: 360
        height: 360
        anchors.leftMargin: 0
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
 

}


и
button.qml

Код:
import QtQuick 1.0
//import Qt 4.7


Item {
    id: button
    signal clicked
    property string text
    property bool toggled: false
    width: 100
    height: 60
    Rectangle {
        anchors.fill: button
        anchors.margins: mouseArea.pressed ? 3 : 2
        color: toggled ? (mouseArea.pressed ? "#442222" : "darkred") : (mouseArea.pressed ? "#333333": "black")
        radius: mouseArea.pressed ? 8 : 6
        Text {
            id: text
            anchors.centerIn: parent
            text: button.text
            font.pixelSize: mouseArea.pressed ? 12 : 14
            color: "white"
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
        }
        MouseArea {
            id: mouseArea
            anchors.fill: parent
            onClicked: {
                button.clicked()
            }
        }
    }
}

По идее для обращение к объекту из button.qml в main.qml надо написать - button {}, но на это креатор ругается.
Записан
Kunashir
Гость
« Ответ #2 : Ноябрь 25, 2011, 10:40 »

Решение: имя для файлов, которые будут использоваться как компоненты, надо начинать с большой буквы!
Спасибо, Пантерy.
Записан
twp
Гость
« Ответ #3 : Ноябрь 25, 2011, 15:10 »

Вообще то это JavaScript и перед тем как начинать использовать QML троли рекомендуют изучить или хотя бы ознакомится с JavaScript.
Записан
Kunashir
Гость
« Ответ #4 : Ноябрь 25, 2011, 21:04 »

Twp, не пойму при чем здесь JavaScript и то что имя файла должно быть с большой буквы! У меня то не было ошибки в синтаксисе. Или я что-то не понимаю?
Записан
twp
Гость
« Ответ #5 : Ноябрь 26, 2011, 00:03 »

тут обратная зависимость. Поскольку имена типов объектов в JavaScript всегда должны начинаться с большой буквы (а переменные только с маленькой), то и имена файлов, которые используется в качестве типов объектов, соответвенно должны иметь такое же имя + раширение (.qml)
Записан
Kunashir
Гость
« Ответ #6 : Ноябрь 26, 2011, 11:52 »

тут обратная зависимость. Поскольку имена типов объектов в JavaScript всегда должны начинаться с большой буквы (а переменные только с маленькой), то и имена файлов, которые используется в качестве типов объектов, соответвенно должны иметь такое же имя + раширение (.qml)

Понял, спасибо за разъяснение.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 21.