Thanks guys!  This works!

File: main.qml

import QtQuick 2.2

import QtGraphicalEffects 1.0

import QtQuick.Controls 1.4

import QtQuick.Controls.Styles 1.4

import QtQuick.Dialogs 1.0

import QtQuick.Extras 1.4

import QtQuick.Layouts 1.0

import QtQuick.Window 2.1

Rectangle {

    id: rectangle

    color: "red"

    width: 200

    height: 200


    Tumbler {

        objectName: "lat"


        // latitude degrees -180 to +180

        TumblerColumn {

            model: ListModel {

                Component.onCompleted: {

                    for (var i = -180; i <= 180; ++i) {

                        append({value: i.toString()});

                    }

                }

            }

        }

        // latitude minutes 0 - 59

        TumblerColumn {

            model: 60

        }

        // latitude seconds 0 - 59

        TumblerColumn {

            model: 60

        }

    }


}

I am a total QML newbie.  I am currently copying QML source without 
understanding it, modify, then run and view results.

I am using the Qt 5.5 Tumbler from  
http://doc.qt.io/qt-5/qml-qtquick-extras-tumbler.html

I can set and get column indexes from C++ when I press a widget button.


void MainWindow::on_pushButtonSet_clicked()

{

    QObject *objectRectangle = m_view->rootObject();

    QObject *objectLatitude = objectRectangle->findChild<QObject*>("lat");

    if (0 != objectLatitude)

    {

        // void setCurrentIndexAt(int columnIndex, int itemIndex)

        for(int col = 0; col < 3; ++col)

        {

            QVariant columnIndex(col);

            QMetaObject::invokeMethod(objectLatitude, "setCurrentIndexAt",

                    Q_ARG(QVariant, columnIndex),

                    Q_ARG(QVariant, 0));

        }

    }

}


void MainWindow::on_pushButtonGet_clicked()

{

    QObject *objectRectangle = m_view->rootObject();

    QObject *objectLatitude = objectRectangle->findChild<QObject*>("lat");

    if (0 != objectLatitude)

    {

        // int currentIndexAt(int columnIndex)

        for(int col = 0; col < 3; ++col)

        {

            QVariant returnedValue;

            QVariant columnIndex(col);

            QMetaObject::invokeMethod(objectLatitude, "currentIndexAt",

                    Q_RETURN_ARG(QVariant, returnedValue),

                    Q_ARG(QVariant, columnIndex));

                qDebug() << "returnedValue: " << returnedValue.toString();

        }

    }

}

It works well on OS X except no-repaint issues when resizing mainwindow.

It does not display so well on Android and iOS devices. I will look at some of 
the Qt examples and hope to learn more.  At this point C++ to QML interop seems 
to do what I need.

Thanks! QML is starting to look less intimidating and more usable.

-Ed

OS X

[cid:F664C66A-76C1-467A-8EFD-F6F1E9C6CCBC@ditchwitch.cmw.internal]


MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);


    connect(ui->pushButton, SIGNAL(clicked()), qApp, SLOT(quit()));


    m_view = new QQuickView();


    QWidget *container = QWidget::createWindowContainer(m_view, this);

    container->setMinimumSize(200, 200);

    container->setMaximumSize(400, 400);

    container->setFocusPolicy(Qt::TabFocus);

    m_view->setSource(QUrl("qrc:/res/files/main.qml"));


    ui->frame->layout()->addWidget(container);


    QObject *objectRectangle = m_view->rootObject();

    QVariant color = objectRectangle->property("color");

    qDebug() << "color: " << color.toString();

    objectRectangle->setProperty("color", "blue");

}



On Nov 4, 2015, at 9:17 AM, Jason H <jh...@gmx.com<mailto:jh...@gmx.com>> wrote:

You can just programmaticaly make a model.

Here is real code to make a list of 1 to 31 days for a date picker:

ListModel {

        id: dayModel

}

//--- in Component.onCompleted: {

for (var i=1; i<32; i++)

        dayModel.append({value: i, name: ''+i});

//--- }

Sent: Wednesday, November 04, 2015 at 9:53 AM
From: "Edward Sutton" 
<edward.sut...@subsite.com<mailto:edward.sut...@subsite.com>>
To: "Qt Interest" <interest@qt-project.org<mailto:interest@qt-project.org>>
Subject: [Interest] Can QML model specify a range including negative numbers? 
For example -180 to +180 ?
Is there a way to declare a QML model range from -180 to +180?

A method that does not require typing 361 numbers model: [-180, -179, … 0, … 
179, 180 ] ?



I added a Tumbler to Combining Qt Widgets and QML with 
QWidget::createWindowContainer()<http://www.ics.com/blog/combining-qt-widgets-and-qml-qwidgetcreatewindowcontainer>
  to experiment with making QML readable and writable from C++.



Tumbler {

    // latitude degrees -180 to +180

    TumblerColumn {

        model: 181  // <- Is there a way to declare model range -180 to +180 ?

    }

    // latitude minutes 0 - 59

    TumblerColumn {

        model: 60

    }

    // latitude seconds 0 - 59

    TumblerColumn {

        model: 60

    }

}



Thanks in advance,



-Ed


This email and any files transmitted with it from The Charles Machine Works, 
Inc. are confidential and intended solely for the use of the individual or 
entity to which they are addressed. If you have received this email in error 
please notify the sender. Our company accepts no liability for the contents of 
this email, or for the consequences of any actions taken on the basis of the 
information provided, unless that information is subsequently confirmed in 
writing. Please note that any views or opinions presented in this email are 
solely those of the author and do not necessarily represent those of the 
company. Finally, the recipient should check this email and any attachments for 
the presence of viruses. The company accepts no liability for any damage caused 
by any virus transmitted by this email. 
_______________________________________________ Interest mailing list 
Interest@qt-project.org<mailto:Interest@qt-project.org> 
http://lists.qt-project.org/mailman/listinfo/interest

This email and any files transmitted with it from The Charles Machine Works, 
Inc. are confidential and intended solely for the use of the individual or 
entity to which they are addressed. If you have received this email in error 
please notify the sender. Our company accepts no liability for the contents of 
this email, or for the consequences of any actions taken on the basis of the 
information provided, unless that information is subsequently confirmed in 
writing. Please note that any views or opinions presented in this email are 
solely those of the author and do not necessarily represent those of the 
company. Finally, the recipient should check this email and any attachments for 
the presence of viruses. The company accepts no liability for any damage caused 
by any virus transmitted by this email.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to