Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. User Customizable Touch Screen Interface.
Forum Updated to NodeBB v4.3 + New Features

User Customizable Touch Screen Interface.

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
15 Posts 3 Posters 3.8k Views 2 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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #2

    HI and welcome to devnet,

    What kind of commands would your users have at hand ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • C Offline
      C Offline
      cdw3423
      wrote on last edited by
      #3

      The commands are specific to the external equipment that is being controlled and don't really matter to the interface. They will be saved in a simple text file and when the button associated with those commands is pressed all this app is going to do is send them out over a UART serial connection. The text file will be manually generated on a PC by the end users and transferred to the Raspberry Pi.

      If I go with option one, the user will also have to supply a 800 x 480 images that each represents a page of buttons. The Touch Screen is 500 x 480. If I go with the second option where they supply icon files for the buttons that are then mapped to actual Qt button objects in a grid, I will probably have Qt scale the icons to fit the size of the button. This will be handy if I decide to make a mobile version that uses a Bluetooth serial adapter.

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #4

        So you have some sort of editor on the desktop machine to create files to generate the UI on the Pi ?

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • C Offline
          C Offline
          cdw3423
          wrote on last edited by
          #5

          Yes but it's not special software it is just any text editor to create the config file and any image editor to create/edit either button icons or button page images. So the Qt app will need to read the config file, display either a single image full screen and respond to touch events or read icon files into a grid of Qt buttons objects and then each button will execute code to send the commands from the same config file out the serial port

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #6

            Then it really looks like you should provide an editor that generates the configuration files the way your application expects them rather than rely only user input without any validation.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • C Offline
              C Offline
              cdw3423
              wrote on last edited by
              #7

              Maybe, but that has nothing to do with Qt or how I should design the app. I'm asking for input on how to use Qt. The way my config files are maintained is not relevant. What I need help with is how to get started with the GUI in Qt.

              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #8

                Well, partly it does, because you could be generating QtQuick controls out of your configuration for your application to load for example. Thus it could be mainly a "loader" that handles these "pages".

                Otherwise you'd need a parser to generate dynamically the interface.

                In any case, you should take a look at QtQuick and the Graphics View framework to see which one might fit better your need.

                I'd rather not start with custom static images. You would have to know the place of each and every button, check for every touch whether it's in the geometry of any button and the user wouldn't have any visual feed back that there's something happening when he presses one of theses buttons.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  cdw3423
                  wrote on last edited by
                  #9

                  I took a look at QtQuick and created a simple qml app with code listed below and the image I used to represent all 20 buttons.

                  So I have a few questions.
                  How can I load the qml file at run time and also the image file. The only way I could get the image to show up at run time was to manually edit the qml.qrc file and add <file>Buttons.png</file>. Before I did that, the image would show up in the QtCreator design view but would not show up when I ran the app. As you can see, there is user feedback when the mouse is pressed. I'm assuming I can use similar code for touch events. Also I need to figure out how to have a swipe action switch between images.
                  Right now I am doing this all on a windows PC, it sounds like the best way to build this for the Raspberry pi is to install linux on a PC and build it with Qt on linux.

                  MainForm.ui.qml

                  import QtQuick 2.6
                  
                  Rectangle {
                      property alias mouseArea: mouseArea
                      width: 500
                      height: 400
                      property alias repeater: repeater
                  
                      Image {
                          id: image
                          anchors.fill: parent
                          source: "Buttons.png"
                      }
                  
                      MouseArea {
                          id: mouseArea
                          anchors.fill: parent
                          Grid {
                              id: grid
                              rows: 4
                              columns: 5
                              anchors.fill: parent
                              Repeater {
                                  id:repeater
                                  model: 20
                                  Rectangle{
                                      width: 100
                                      height: 100
                                      color: "#868686"
                                      radius: 5
                                      opacity: 0
                                      border.width: 2
                                  }
                              }
                          }
                      }
                  }
                  

                  and Main.qml

                  import QtQuick 2.6
                  import QtQuick.Window 2.2
                  
                  Window {
                      visible: true
                      width: 500
                      height: 400
                      title: qsTr("Hello World")
                      property int rectIdx
                  
                      MainForm {
                          anchors.fill: parent
                          mouseArea.onClicked: {
                              //console.log(qsTr('Clicked on background. Text: "' + textEdit.text + '"'))
                          }
                          mouseArea.onPressed: {
                              rectIdx = getRectIdx(mouseArea.mouseX, mouseArea.mouseY)
                              //console.log(qsTr('Rect Coord "' + xCord + ', ' + yCord + '" idx: ' + rectIdx))
                              repeater.itemAt(rectIdx).opacity = .8
                          }
                          mouseArea.onReleased: {
                              rectIdx = getRectIdx(mouseArea.mouseX, mouseArea.mouseY)
                              //console.log(qsTr('Rect Coord "' + xCord + ', ' + yCord + '" idx: ' + rectIdx))
                              repeater.itemAt(rectIdx).opacity = 0
                          }
                      }
                      function getRectIdx(x, y){
                          x = x/100;
                          y = y/100;
                          y = y|0;
                          x = x|0;
                          return y * 5 + x;
                      }
                  }
                  
                  

                  alt text

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    qrc files are read-only and end up as a .cpp file that is compiled.

                    Your images are not found likely because you're using a relative path.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    C 1 Reply Last reply
                    0
                    • SGaistS SGaist

                      qrc files are read-only and end up as a .cpp file that is compiled.

                      Your images are not found likely because you're using a relative path.

                      C Offline
                      C Offline
                      cdw3423
                      wrote on last edited by
                      #11

                      @SGaist
                      I figured out the relative path problem. But I can't find anyway to get an image added as built in resource using Qt Creator 4.2.1 with out manually editing qml.qrc. I have to reload the project after that edit I think. If there is some way to add items to the resources using the Qt Creator UI, I can't find it.

                      jsulmJ 1 Reply Last reply
                      0
                      • C cdw3423

                        @SGaist
                        I figured out the relative path problem. But I can't find anyway to get an image added as built in resource using Qt Creator 4.2.1 with out manually editing qml.qrc. I have to reload the project after that edit I think. If there is some way to add items to the resources using the Qt Creator UI, I can't find it.

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #12

                        @cdw3423

                        1. Select resource file in QtCreator
                        2. Right click on it then "Open With/Resource Editor"
                        3. Add/remove files there

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        C 1 Reply Last reply
                        1
                        • jsulmJ jsulm

                          @cdw3423

                          1. Select resource file in QtCreator
                          2. Right click on it then "Open With/Resource Editor"
                          3. Add/remove files there
                          C Offline
                          C Offline
                          cdw3423
                          wrote on last edited by
                          #13

                          @jsulm Last night when I read your post, I was sure I had tried to right click and nothing happened. But I tried it and it did work. Today I decided to do some more experimenting and once again right clicking on the resource file doesn't do anything. So I opened a few different projects and still no joy. I'm not sure if this is a bug or if somehow I am in a mode that won't let me see the right click options. I tried it with and with out a project running.

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #14

                            What happens if you just select the .qrc file ? You should get a nice editor.

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            C 1 Reply Last reply
                            0
                            • SGaistS SGaist

                              What happens if you just select the .qrc file ? You should get a nice editor.

                              C Offline
                              C Offline
                              cdw3423
                              wrote on last edited by
                              #15

                              @SGaist
                              Last night when I tried, it was all working, but not today. Maybe I will install it on a different computer and see what happens.

                              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