Russian Qt Forum

Qt => Qt Quick => Тема начата: AfterEarth от Январь 26, 2011, 01:26



Название: QML - вывод своих типов
Отправлено: AfterEarth от Январь 26, 2011, 01:26
Всем доброго времени суток!
После долгих мучений с интерфейсом на Qt перевожу его на QML. Всё прекрасно, НО! - определил свой тип, зарегил его и передал в него данные, но он не отображается в главном окне, как отображался до регистрации его с помощью qmlRegisterType
Код:
main.cpp

qmlRegisterType<ToolBar>("ToolBar", 1, 0, "ToolBar");

Код:
mainwindow.cpp

QDeclarativeView toolbar;
  ... запрос
    QString cartTextInfo = ..результат запроса;
  
    toolbar.setSource(QUrl::fromLocalFile("ToolBar.qml"));

    toolbar.rootContext()->setContextProperty("cartText",cartTextInfo);

Код:
toolbar.cpp

QString ToolBar::cartText() const
{
    qDebug() << "Cart text:"<<m_cartText; //- не показывается :-/
    return m_cartText;
}

void ToolBar::setCartText(QString &cartText)
{
    qDebug() << "Cart text set:"<<cartText; //- не показывается :-/
    m_cartText = cartText;
}


Код:
tollbar.h

class ToolBar : public QDeclarativeItem
{
    Q_OBJECT
    Q_PROPERTY(QString cartText READ cartText WRITE setCartText)
public:
    //explicit
    ToolBar(QDeclarativeItem *parent = 0);
    QString cartText() const;
    void setCartText(QString &cartText);

private:
    QString m_cartText;

Код:
ToolBar.qml

import Qt 4.7
import ToolBar 1.0

ToolBar {
    //Rectangle
    id: toolbar_panel
    objectName: "toolBar"
    visible: true
    enabled: true
    property string cartText
Text {
        id: textelement
        text: "What is what?"
        color: "green"
        x: 300
        y: parent.y
    }

Код:
app.qml
MainWindow {
    id: aMainWindow
    width: screenWidth()
    height: screenHeight()

    Rectangle {
        x: 0
        y: 0
        width: parent.width
        height: parent.height
        gradient: Gradient {
                 GradientStop { position: 0.0; color: Qt.rgba(119, 119, 119, 255)}
                 GradientStop { position: 1.0; color: Qt.rgba(255, 255, 255, 255)}
             }
        border.width: 0
...
 Item {
           id: buyView
           x: 0
           y: 0
           width: parent.width
           height: parent.height
           visible: false
           anchors {top: parent.top;  horizontalCenter: parent.horizontalCenter }
  
           ToolBar {
               id: htb_toolbar
               width: parent.width
               height: 90
               x: 0
               y: 500 //aMainWindow.screenHeight()-200
               //anchors.bottom: parent.bottom
           }

Без регистрации ToolBar,когда он был описан в ToolBar.qml как Rectangle всё работало, а сейчас ToolBar не выводится в MainWindow :'-(
Смысл этого всего в том, чтобы отображать в текстовом поле в ToolBar информацию из базы данных с обновлением.
Пример с запросом из javascript пробовал -базу не находит очевидно :(

Очень срочно нужна помощь! Заранее спасибо!

P.S. Qt 4.7.0


Название: Re: QML - вывод своих типов
Отправлено: AfterEarth от Январь 26, 2011, 09:22
Всё, вопрос решён-взял данные из property для отдельного элемента