onclicked button open "new" form



  • Hello guys you will probably say that crazy to don't know how to do but I don't ;-)
    then, with qt quick and quick control, I want to "call" an other qml form when button on first form is clicked but I do not want to have an other window like "pop up" opening.

    Could you help me?

    thank you very much
    Philippe


  • Qt Champions 2017

    Ehh, how do you then want the other window to appear?



  • Hello, I don't want other windows



  • I want that the button pressed do like go to an other slide


  • Qt Champions 2017

    @filipdns
    so why do you want another QML form if you dont want to show it?

    You try to make sort of a page design?
    where it switches a pages but its only one window?



  • I was thinking it's easier to have each pages on separate qml but may be not, I don't know, I'm just start with qml to do API for my project



  • may be I use wrong "word" to be clear, I want multiple pages display in the windows but one by one each time I click on the wanted button, that more clear or not?


  • Qt Champions 2017

    @filipdns
    Yes, its a normal design.
    Make a new QML default project.
    Its actually structured like that.
    With pages in its own QML file.

    File->New Project->Application->Quick Controls 2 application.

    And run it. That sounds like what you are after. one window. you can switch "pages".

    and please have a look in
    https://qmlbook.github.io/
    also if not already seen.



  • that not really what I'm looking for but it's start to give answers.
    I show you a quick sample by picture I just did with paint, may be It will be more clear ;-)
    0_1510687014341_main_page.gif
    after button "page1" clicked the page change to this below:

    0_1510687031461_page1.gif


  • Qt Champions 2017

    Hi
    Well the sample just uses tab buttons, but nothing stopping from using an other type of button in the center
    and still use the SwipeView to manage the pages.

    http://doc.qt.io/qt-5/qml-qtquick-controls-button.html#details

      Page1 {
                Button {
                    onClicked:{swipeView.currentIndex = swipeView.currentIndex+1}
                    text: "Button"
                }
            }
    


  • ok, cool, I will test that thank you!!


  • Qt Champions 2017

    @filipdns
    Np. If you really new to QML, browse over that book gives good hint how QML works.
    QML is very flexible and u can mix most things as you like.



  • Thank you, I'm reading it , to do button and add style like shadow that ok, I understood that, action to change color or else on same page also It's easy. The most difficult for me was to understand how change the complete page with an other with onclick action.
    I will try your method and I will make feedback here, thanks again


  • Qt Champions 2017

    @filipdns
    Well when you want it to stay inside same window. You often use a container like swipeView as its less
    messy as to have all the QML pages stacked on top and show/hide to flip pages.
    There are other ways to have multiple pages/screens but swipeView does it with style.

    Happy programming.



  • Just quick other question, it's not possible to do in the main.qml the action button task and make the form I want for each page?
    example:
    main.qml

    ApplicationWindow {
        visible: true
        width: 640
        height: 480
     
    button {
    id: button1
    anchors.fill: parent
                     MouseArea {
                                           id: mouseArea
                                           anchors.fill: parent
                                           onClicked: page2.qml()
        }
    button {
    id: button2
    anchors.fill: parent
                     MouseArea {
                                           id: mouseArea
                                           anchors.fill: parent
                                           onClicked: page3.qml()
        }
    

    it's not real code that just to illustrate what I have in my mean ;-)


  • Qt Champions 2017

    @filipdns
    It is, but you want it to be part of the SwipeView
    Image the structure being a tree, so we must add them to the SwipeView structure for them to be "in" it

     SwipeView {
            id: swipeView
            anchors.fill: parent
            currentIndex: tabBar.currentIndex
    
            Page1 {
                Button {
                    onClicked:{swipeView.currentIndex = swipeView.currentIndex+1}
                    text: "Button"
                }
            }
    
            Page {
                Label {
                    text: qsTr("Second page")
                    anchors.centerIn: parent
                }
            }
        }
    
    

    Else they be under ApplicationWindow and we can not change page. (also swipeview might cover them)



  • @mrjj may be a misunderstanding I don't want swipe at all


  • Qt Champions 2017

    @filipdns
    Ignore the swipe effect for now.
    Its to handle the actual page switching. (not to get the animation)
    Else you would have to hide or show all elements depending on what
    page you are currently viewing.

    Alternativ you can use
    http://doc.qt.io/qt-5/qml-qtquick-controls-stackview.html
    which have no animation effect as far as i know.



  • oh that feel more than what I was looking for ;-) thank you


  • Qt Champions 2017

    @filipdns
    yes it should be :)
    It provides a page handler with the ability to go back and forth.
    Note, that you could also hide/show the pages your self but
    its less code to use a premade element designed for such design.



  • Yes less code it s better for me 😉


  • Qt Champions 2017

    @filipdns
    That goes for most people :)
    Reusing already tested code is just more fun.



  • onClicked: stackView.push (Qt.resolvedUrl("SliderPage.qml"))


  • Qt Champions 2017

    @filipdns
    Some text would help understand :)



  • hello, it's just the way to do what the topic ask ;-)

    import QtQuick 2.2
    import QtQuick.Controls 1.2
    import QtQuick.Controls.Styles 1.1
    Item {
        width: parent.width
        height: parent.height
    
        Column {
            spacing: 5
                Button {
                anchors.margins: 20
                text: "24"
                onClicked: stackView.push (Qt.resolvedUrl("SliderPage.qml"))
            }
    }
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.