Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. A basic Question
Forum Updated to NodeBB v4.3 + New Features

A basic Question

Scheduled Pinned Locked Moved Solved QML and Qt Quick
qmlstyesheet
30 Posts 5 Posters 11.1k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    Eeli K
    wrote on last edited by
    #19

    Just one stylistic note... Quick Controls 2 standard library qml code uses this extensively so it may be at least good to know even if you don't want to use it. It's alternative syntax for nested if-else. Modifying my own code, just set the rectangle color (or in sierzio's code the image source):

    color: root.isConnected ? (mouseArea.containsMouse ? "red" : "green") :
           (mouseArea.containsMouse ? "blue" : "yellow")
    

    This is from the Material style's Button.qml:

    color: !control.enabled ? control.Material.hintTextColor :
                control.flat && control.highlighted ? control.Material.accentColor :
                control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.foreground
    
    1 Reply Last reply
    1
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #20

      Heh, actually the first version of my snipped used the question mark notation, but I changed it to if-else because I thought it would be more readable.

      It is definitely a good approach, and for simple cases I would recommend it - QML engine can optimize the question mark operator more heavily than if-else.

      (Z(:^

      1 Reply Last reply
      1
      • mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #21

        hi
        oh my gosh, is that like a c++ ternary operator that can be nested ?
        But its not super readable unless really short.

        1 Reply Last reply
        0
        • GrecKoG Offline
          GrecKoG Offline
          GrecKo
          Qt Champions 2018
          wrote on last edited by
          #22

          It's the same, a c++ ternary operator can be nested.

          mrjjM 1 Reply Last reply
          0
          • GrecKoG GrecKo

            It's the same, a c++ ternary operator can be nested.

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #23

            @GrecKo
            Yep, i realized that after asking but I think i never saw one in c++
            like
            !m_seedsfilter ? good=true : m_seedsfilter==1 ? good=newClusters(Sp) : good=newSeed(Sp);

            (ugly as hell)

            1 Reply Last reply
            0
            • GrecKoG Offline
              GrecKoG Offline
              GrecKo
              Qt Champions 2018
              wrote on last edited by
              #24

              Off-topic but it would be good = !m_seedsfilter? true : m_seedsfilter == 1 ? newClusters(Sp) : newSeed(Sp);, it's the same notation in Js and in c++

              1 Reply Last reply
              1
              • mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #25

                Thanks
                but was just live sample from
                https://stackoverflow.com/questions/18237432/how-to-rewrite-complicated-lines-of-c-code-nested-ternary-operator/18237507
                But back to topic a bit.

                Do you know how much of JS that is supported in QML ?
                Can i include .js stuff ?

                sierdzioS 1 Reply Last reply
                0
                • mrjjM mrjj

                  Thanks
                  but was just live sample from
                  https://stackoverflow.com/questions/18237432/how-to-rewrite-complicated-lines-of-c-code-nested-ternary-operator/18237507
                  But back to topic a bit.

                  Do you know how much of JS that is supported in QML ?
                  Can i include .js stuff ?

                  sierdzioS Offline
                  sierdzioS Offline
                  sierdzio
                  Moderators
                  wrote on last edited by
                  #26

                  @mrjj said in A basic Question:

                  Do you know how much of JS that is supported in QML ?
                  Can i include .js stuff ?

                  I think V4 engine implements full ECMA 5.1 specs, so you can run any JavaScript there, unless it uses newer features.

                  (Z(:^

                  mrjjM 1 Reply Last reply
                  0
                  • sierdzioS sierdzio

                    @mrjj said in A basic Question:

                    Do you know how much of JS that is supported in QML ?
                    Can i include .js stuff ?

                    I think V4 engine implements full ECMA 5.1 specs, so you can run any JavaScript there, unless it uses newer features.

                    mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #27

                    @sierdzio said in A basic Question:

                    ECMA 5.1 specs

                    so that is pretty old ?
                    5.1 Edition / June 2011
                    https://www.ecma-international.org/ecma-262/5.1/

                    So most from
                    https://www.javascripting.com/

                    might not work as 6 years in Web tech is a decade ?

                    1 Reply Last reply
                    0
                    • sierdzioS Offline
                      sierdzioS Offline
                      sierdzio
                      Moderators
                      wrote on last edited by
                      #28

                      It is old, indeed. But a lot of projects like node.js, charts.js etc. seem to be working (or used to work 1-2 years back).

                      There is a ticket for upgrading the engine, but it lays dormant since years https://bugreports.qt.io/browse/QTBUG-47735

                      (Z(:^

                      mrjjM 1 Reply Last reply
                      1
                      • sierdzioS sierdzio

                        It is old, indeed. But a lot of projects like node.js, charts.js etc. seem to be working (or used to work 1-2 years back).

                        There is a ticket for upgrading the engine, but it lays dormant since years https://bugreports.qt.io/browse/QTBUG-47735

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #29

                        @sierdzio

                        Ok sounds pretty good. even if older.

                        It is odd that its not been updated since lots of activities on QML.

                        Thank you for all the info :)

                        sierdzioS 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          @sierdzio

                          Ok sounds pretty good. even if older.

                          It is odd that its not been updated since lots of activities on QML.

                          Thank you for all the info :)

                          sierdzioS Offline
                          sierdzioS Offline
                          sierdzio
                          Moderators
                          wrote on last edited by
                          #30

                          @mrjj said in A basic Question:

                          It is odd that its not been updated since lots of activities on QML.

                          There was a discussion about it on the mailing list once. If I recall it correctly, the priority for Qt devs working on QML was to keep the engine fast, and make it work 100% reliable in common QML use cases (and the most common uses are: small bindings/ assignments and short functions) - so they did not feel pressure to implement newer features.

                          (Z(:^

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved