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. Advice about the application I will be making? (I'm a beginner)
Forum Updated to NodeBB v4.3 + New Features

Advice about the application I will be making? (I'm a beginner)

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
77 Posts 6 Posters 25.6k 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.
  • M mrjj
    20 Apr 2019, 21:42

    @dvlpr.bernard
    Ok, c++ it is.
    The Stacked widget should work fine.
    However, regarding the sqllite database. Im not sure its worth digging into
    SQL for mere 75 questions.
    You could just as easy store it in a text file or for a bit more structure use JSON which
    Qt has direct support for.

    D Offline
    D Offline
    dvlpr.bernard
    wrote on 21 Apr 2019, 01:16 last edited by
    #12

    @mrjj
    Sorry but, can you Elaborate? I don't need SQLite because JSON could do the work for me?
    Thank you :)

    1 Reply Last reply
    0
    • M mrjj
      20 Apr 2019, 21:42

      @dvlpr.bernard
      Ok, c++ it is.
      The Stacked widget should work fine.
      However, regarding the sqllite database. Im not sure its worth digging into
      SQL for mere 75 questions.
      You could just as easy store it in a text file or for a bit more structure use JSON which
      Qt has direct support for.

      D Offline
      D Offline
      dvlpr.bernard
      wrote on 21 Apr 2019, 01:41 last edited by
      #13

      @mrjj
      Hi. I will try to learn QML. What do you think is the best fit for my app the QT Quick Application - Stack or QT Quick Application - Swipe?
      And what are the best resources to learn it out there?

      Thank you again in advance :)

      1 Reply Last reply
      0
      • D Offline
        D Offline
        dvlpr.bernard
        wrote on 21 Apr 2019, 03:13 last edited by
        #14

        QML seems pretty gorgeous with the user interface. But how am I'm going to work with the back-end kinda stuff??

        1 Reply Last reply
        0
        • M mrjj
          20 Apr 2019, 21:42

          @dvlpr.bernard
          Ok, c++ it is.
          The Stacked widget should work fine.
          However, regarding the sqllite database. Im not sure its worth digging into
          SQL for mere 75 questions.
          You could just as easy store it in a text file or for a bit more structure use JSON which
          Qt has direct support for.

          D Offline
          D Offline
          dvlpr.bernard
          wrote on 21 Apr 2019, 03:17 last edited by
          #15

          @mrjj
          If Javascript is the language for QML then that would be bad because the required languange for the app is c++.

          K 1 Reply Last reply 21 Apr 2019, 03:26
          0
          • D dvlpr.bernard
            21 Apr 2019, 03:17

            @mrjj
            If Javascript is the language for QML then that would be bad because the required languange for the app is c++.

            K Offline
            K Offline
            KillerSmath
            wrote on 21 Apr 2019, 03:26 last edited by
            #16

            @dvlpr.bernard
            You could write the backend on c++ and expose an object from C++ to QML.
            https://doc.qt.io/qt-5/qtqml-cppintegration-contextproperties.html
            https://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html.

            @Computer Science Student - Brazil
            Web Developer and Researcher
            “Sometimes it’s the people no one imagines anything of who do the things that no one can imagine.” - Alan Turing

            1 Reply Last reply
            5
            • M mrjj
              20 Apr 2019, 21:42

              @dvlpr.bernard
              Ok, c++ it is.
              The Stacked widget should work fine.
              However, regarding the sqllite database. Im not sure its worth digging into
              SQL for mere 75 questions.
              You could just as easy store it in a text file or for a bit more structure use JSON which
              Qt has direct support for.

              D Offline
              D Offline
              dvlpr.bernard
              wrote on 21 Apr 2019, 14:20 last edited by
              #17

              @mrjj Good day sir!

              I was just wondering how am I going to present the data? Should I store all the interface in one Stack Widget or do I need another window or another Stack Widget? :)

              And also I consider looking at SQLite. Where would I store the questions kinda thing or the output to compare to the user input? Thank you again in advance :)
              0_1555859866247_0c9e3a4f-a3af-45bd-8af3-b4e50e870d9c-image.png

              K 1 Reply Last reply 21 Apr 2019, 22:29
              0
              • D Offline
                D Offline
                dvlpr.bernard
                wrote on 21 Apr 2019, 14:43 last edited by
                #18

                Or it should look like these?
                What are the things I need to consider :)

                0_1555861384574_636d3370-b62b-4ed1-9b49-cdc8e65c107e-image.png

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 21 Apr 2019, 21:47 last edited by
                  #19

                  Hi
                  Last table looks ok. I assume then all question is a topic and the answer is some
                  text. No mutiple choice or anything like that ?

                  Since we will have few questions (75) its ok to include the difficult_level
                  as text. If we were to have thousands of questions, it would be better to have a table for the texts ( Beginner, Average etc) and reference it from Question table.
                  However, we just directly included it here for simplicity.

                  Next step could be to try use table in Qt
                  https://doc.qt.io/qt-5/qtsql-index.html
                  https://katecpp.wordpress.com/2015/08/28/sqlite-with-qt/

                  Things to consider:
                  Define the operations you need, like
                  select questions from a diff_level
                  keeping track of already used questions (if needed ?)

                  D 1 Reply Last reply 22 Apr 2019, 15:34
                  6
                  • D dvlpr.bernard
                    21 Apr 2019, 14:20

                    @mrjj Good day sir!

                    I was just wondering how am I going to present the data? Should I store all the interface in one Stack Widget or do I need another window or another Stack Widget? :)

                    And also I consider looking at SQLite. Where would I store the questions kinda thing or the output to compare to the user input? Thank you again in advance :)
                    0_1555859866247_0c9e3a4f-a3af-45bd-8af3-b4e50e870d9c-image.png

                    K Offline
                    K Offline
                    KillerSmath
                    wrote on 21 Apr 2019, 22:29 last edited by
                    #20

                    I was just wondering how am I going to present the data? Should I store all the interface in one Stack Widget or do I need another window or another Stack Widget? :)

                    I suppose you pretent to use QML. So you can store the data in a model and display components on window depending of your data.

                    Swipe View
                    Stack View

                    Below is a idea of how you could to implement it with Swipe View (No Interative Mode)

                    // Qt 5.11
                    import QtQuick 2.11
                    import QtQuick.Window 2.11
                    import QtQuick.Controls 2.2
                    import QtQuick.Layouts 1.11
                    
                    Window {
                        visible: true
                        width: 640
                        height: 480
                        title: qsTr("Hello World")
                    
                        ListModel{
                            id: databaseModel
                            ListElement{
                                topic: "While Loop"
                                dificulty: 3
                                question_num: 3
                                question_text: "While Loop 3,3"
                            }
                    
                            ListElement{
                                topic: "While Loop"
                                dificulty: 3
                                question_num: 4
                                question_text: "While Loop 3,4"
                            }
                        }
                    
                        SwipeView {
                            id: view
                            anchors.fill: parent
                            anchors.bottomMargin: 20
                            interactive: false
                            currentIndex: pageIndicator.currentIndex
                            Repeater {
                                model: databaseModel
                                Loader {
                                    active: SwipeView.isCurrentItem || SwipeView.isNextItem || SwipeView.isPreviousItem
                                    sourceComponent: Page{
                                        Rectangle{
                                            width: view.width / 2
                                            height: view.height / 2
                                            color: "white"
                                            anchors.centerIn: parent
                    
                                            Text{
                                                anchors.centerIn: parent
                                                text: "Question: " + model.question_text
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    
                        PageIndicator {
                            id: pageIndicator
                            count: databaseModel.count
                            interactive: true
                            currentIndex: 0
                            anchors.bottom: parent.bottom
                            anchors.horizontalCenter: parent.horizontalCenter
                    
                        }
                    
                    }
                    

                    Note: the listModel (Data) and Game Logic can be implemented from c++.

                    And also I consider looking at SQLite. Where would I store the questions kinda thing or the output to compare to the user input? Thank you again in advance :)

                    Firstly, it may be implement of several ways...
                    You can insert a Json text with correct_answer index and answers.
                    Or create an array of text and correct_answer field (i'm not sure how it could be implemented).

                    Json Example:

                    {
                       "correct_answer": 0,
                       "answers": [
                          "Answer 1",
                          "Answer 2",
                          "Answer 3"
                       ]
                    }
                    

                    Also, the difficulty_level don't need to be a string field. You can storage an intenger number 1-3 and interpret it in your app. 1 -> Beginner, 2 -> Intermediate.

                    I recommend you to read these materials to understand the Relational Database Concepts:
                    Telvents - RDBMS Concepts
                    TutorialsPoint - RDBMS Concepts

                    @Computer Science Student - Brazil
                    Web Developer and Researcher
                    “Sometimes it’s the people no one imagines anything of who do the things that no one can imagine.” - Alan Turing

                    D 1 Reply Last reply 22 Apr 2019, 15:53
                    2
                    • M mrjj
                      21 Apr 2019, 21:47

                      Hi
                      Last table looks ok. I assume then all question is a topic and the answer is some
                      text. No mutiple choice or anything like that ?

                      Since we will have few questions (75) its ok to include the difficult_level
                      as text. If we were to have thousands of questions, it would be better to have a table for the texts ( Beginner, Average etc) and reference it from Question table.
                      However, we just directly included it here for simplicity.

                      Next step could be to try use table in Qt
                      https://doc.qt.io/qt-5/qtsql-index.html
                      https://katecpp.wordpress.com/2015/08/28/sqlite-with-qt/

                      Things to consider:
                      Define the operations you need, like
                      select questions from a diff_level
                      keeping track of already used questions (if needed ?)

                      D Offline
                      D Offline
                      dvlpr.bernard
                      wrote on 22 Apr 2019, 15:34 last edited by
                      #21

                      @mrjj
                      Good day!
                      Yes, there is no multiple choice included. The user is required to type the output of the set of code that will be displayed.

                      As of now, this is how I visualize the logic or the structure of the app (Please let me know if there are some weaknesses or if this will not gonna work or if there is a better way of doing it):

                      1. The user will need to choose and click the button(topic name) which has the code that will declare the variable or an object(I don't know what should I use) and will store a data in it.
                        Example: When the user click the If Statement then int Topic = 1 or string Topic = "IF";

                      2. When the user click the Beginner button then int Dif_Lvl = 1 or string Dif_Lvl= "Beginner";

                      3. When the user input the number and click Next button then int Number_Of_Questions = user_input;
                        Print_Question(Topic, Dif_Lvl, Number_Of_Questions);
                        The Print_Question function contains the query and a loop to display the next pages depending on the user topic/dif_lvl.

                      Do I need objects and classes (not that familiar with that) or mostly I would use functions?

                      0_1555948631684_414b12ee-58f3-411b-b62a-67e630a2173d-image.png

                      Thanks :)

                      1 Reply Last reply
                      0
                      • K KillerSmath
                        21 Apr 2019, 22:29

                        I was just wondering how am I going to present the data? Should I store all the interface in one Stack Widget or do I need another window or another Stack Widget? :)

                        I suppose you pretent to use QML. So you can store the data in a model and display components on window depending of your data.

                        Swipe View
                        Stack View

                        Below is a idea of how you could to implement it with Swipe View (No Interative Mode)

                        // Qt 5.11
                        import QtQuick 2.11
                        import QtQuick.Window 2.11
                        import QtQuick.Controls 2.2
                        import QtQuick.Layouts 1.11
                        
                        Window {
                            visible: true
                            width: 640
                            height: 480
                            title: qsTr("Hello World")
                        
                            ListModel{
                                id: databaseModel
                                ListElement{
                                    topic: "While Loop"
                                    dificulty: 3
                                    question_num: 3
                                    question_text: "While Loop 3,3"
                                }
                        
                                ListElement{
                                    topic: "While Loop"
                                    dificulty: 3
                                    question_num: 4
                                    question_text: "While Loop 3,4"
                                }
                            }
                        
                            SwipeView {
                                id: view
                                anchors.fill: parent
                                anchors.bottomMargin: 20
                                interactive: false
                                currentIndex: pageIndicator.currentIndex
                                Repeater {
                                    model: databaseModel
                                    Loader {
                                        active: SwipeView.isCurrentItem || SwipeView.isNextItem || SwipeView.isPreviousItem
                                        sourceComponent: Page{
                                            Rectangle{
                                                width: view.width / 2
                                                height: view.height / 2
                                                color: "white"
                                                anchors.centerIn: parent
                        
                                                Text{
                                                    anchors.centerIn: parent
                                                    text: "Question: " + model.question_text
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        
                            PageIndicator {
                                id: pageIndicator
                                count: databaseModel.count
                                interactive: true
                                currentIndex: 0
                                anchors.bottom: parent.bottom
                                anchors.horizontalCenter: parent.horizontalCenter
                        
                            }
                        
                        }
                        

                        Note: the listModel (Data) and Game Logic can be implemented from c++.

                        And also I consider looking at SQLite. Where would I store the questions kinda thing or the output to compare to the user input? Thank you again in advance :)

                        Firstly, it may be implement of several ways...
                        You can insert a Json text with correct_answer index and answers.
                        Or create an array of text and correct_answer field (i'm not sure how it could be implemented).

                        Json Example:

                        {
                           "correct_answer": 0,
                           "answers": [
                              "Answer 1",
                              "Answer 2",
                              "Answer 3"
                           ]
                        }
                        

                        Also, the difficulty_level don't need to be a string field. You can storage an intenger number 1-3 and interpret it in your app. 1 -> Beginner, 2 -> Intermediate.

                        I recommend you to read these materials to understand the Relational Database Concepts:
                        Telvents - RDBMS Concepts
                        TutorialsPoint - RDBMS Concepts

                        D Offline
                        D Offline
                        dvlpr.bernard
                        wrote on 22 Apr 2019, 15:53 last edited by
                        #22

                        @KillerSmath
                        Good day! Thank you for your response.
                        As of now, I have not learned QML yet. I only know the basic of QT Widget Application and I also tried the Stack Widget in it. QML seems pretty daunting to me for now but I will consider peeking and see if I could work on it.

                        Sadly I need to finish this app within 3 weeks from now or else I would not meet the deadline. I think I wouldn't be able to dig deep into things because that would eat up my time.

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on 22 Apr 2019, 17:05 last edited by
                          #23

                          @dvlpr.bernard said in Advice about the application I will be making? (I'm a beginner):

                          Do I need objects and classes (not that familiar with that) or mostly I would use functions?

                          You will be mostly used classes since all Widgets are classes.
                          the Print_Question should be a member function to the MainWindow so
                          it can access the widgets. You can use QLabel for the topic (call setText on it)
                          and QPlainTextEdit for the user / answer input.
                          The design looks fine. You can realize it with a stacked widget.

                          for both the Topic and Level selection, you have 2 options.
                          1: as soon as the user click button, its selected and page is changed.
                          2: You set Checkable on the buttons, so they are like a checkbox ( can be selected) and
                          first when user press next, the page is changed.

                          D 1 Reply Last reply 25 Apr 2019, 10:30
                          2
                          • M mrjj
                            22 Apr 2019, 17:05

                            @dvlpr.bernard said in Advice about the application I will be making? (I'm a beginner):

                            Do I need objects and classes (not that familiar with that) or mostly I would use functions?

                            You will be mostly used classes since all Widgets are classes.
                            the Print_Question should be a member function to the MainWindow so
                            it can access the widgets. You can use QLabel for the topic (call setText on it)
                            and QPlainTextEdit for the user / answer input.
                            The design looks fine. You can realize it with a stacked widget.

                            for both the Topic and Level selection, you have 2 options.
                            1: as soon as the user click button, its selected and page is changed.
                            2: You set Checkable on the buttons, so they are like a checkbox ( can be selected) and
                            first when user press next, the page is changed.

                            D Offline
                            D Offline
                            dvlpr.bernard
                            wrote on 25 Apr 2019, 10:30 last edited by
                            #24

                            @mrjj
                            Good day!

                            Is it possible to store a long string in SQLite database or maybe an image? I need it for the questions or do I?

                            0_1556191665411_732ce764-c6ca-43bb-9503-7d7f32a626a5-image.png

                            M 1 Reply Last reply 25 Apr 2019, 10:33
                            0
                            • D dvlpr.bernard
                              25 Apr 2019, 10:30

                              @mrjj
                              Good day!

                              Is it possible to store a long string in SQLite database or maybe an image? I need it for the questions or do I?

                              0_1556191665411_732ce764-c6ca-43bb-9503-7d7f32a626a5-image.png

                              M Offline
                              M Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on 25 Apr 2019, 10:33 last edited by
                              #25

                              Hi
                              Storing text in Sqllite should just work. use the TEXT type for the column.

                              Im not sure what you would need any images for ?

                              D 1 Reply Last reply 25 Apr 2019, 10:42
                              0
                              • M mrjj
                                25 Apr 2019, 10:33

                                Hi
                                Storing text in Sqllite should just work. use the TEXT type for the column.

                                Im not sure what you would need any images for ?

                                D Offline
                                D Offline
                                dvlpr.bernard
                                wrote on 25 Apr 2019, 10:42 last edited by
                                #26

                                Okay, did you mean this string? I already tried it but it didn't work I think it is one liner meaning I can't put two or more line data.

                                0_1556192247323_cb9def4a-6675-4b99-9615-d7151c9d178c-image.png

                                I want store an image to make it look more a real code rather than just a plain text, but if it is not possible thats fine.
                                0_1556192503849_c8f12403-d6c9-48af-bb84-37ba1b9cdfa5-image.png

                                M 1 Reply Last reply 25 Apr 2019, 10:45
                                0
                                • D dvlpr.bernard
                                  25 Apr 2019, 10:42

                                  Okay, did you mean this string? I already tried it but it didn't work I think it is one liner meaning I can't put two or more line data.

                                  0_1556192247323_cb9def4a-6675-4b99-9615-d7151c9d178c-image.png

                                  I want store an image to make it look more a real code rather than just a plain text, but if it is not possible thats fine.
                                  0_1556192503849_c8f12403-d6c9-48af-bb84-37ba1b9cdfa5-image.png

                                  M Offline
                                  M Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on 25 Apr 2019, 10:45 last edited by
                                  #27

                                  @dvlpr.bernard
                                  where you have string, if u open drop down, there is not TEXT type ?

                                  ahh. that way.
                                  well we can fix that later with a syntax highlighter
                                  https://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html
                                  so when we set text texts its formatted with colors. no need to store image of it.

                                  D 1 Reply Last reply 25 Apr 2019, 10:51
                                  2
                                  • M mrjj
                                    25 Apr 2019, 10:45

                                    @dvlpr.bernard
                                    where you have string, if u open drop down, there is not TEXT type ?

                                    ahh. that way.
                                    well we can fix that later with a syntax highlighter
                                    https://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html
                                    so when we set text texts its formatted with colors. no need to store image of it.

                                    D Offline
                                    D Offline
                                    dvlpr.bernard
                                    wrote on 25 Apr 2019, 10:51 last edited by
                                    #28

                                    @mrjj
                                    Uhhmm I see, I need to use Text rather than string.
                                    Thank you, thank you!

                                    M 1 Reply Last reply 25 Apr 2019, 10:53
                                    0
                                    • D dvlpr.bernard
                                      25 Apr 2019, 10:51

                                      @mrjj
                                      Uhhmm I see, I need to use Text rather than string.
                                      Thank you, thank you!

                                      M Offline
                                      M Offline
                                      mrjj
                                      Lifetime Qt Champion
                                      wrote on 25 Apr 2019, 10:53 last edited by
                                      #29

                                      @dvlpr.bernard
                                      string is a way to optimize the db so one can set a fixed size so if all text is within that, its more efficient, however, for your case with 75 questions. just use TEXT type.

                                      D 1 Reply Last reply 25 Apr 2019, 14:01
                                      1
                                      • M mrjj
                                        25 Apr 2019, 10:53

                                        @dvlpr.bernard
                                        string is a way to optimize the db so one can set a fixed size so if all text is within that, its more efficient, however, for your case with 75 questions. just use TEXT type.

                                        D Offline
                                        D Offline
                                        dvlpr.bernard
                                        wrote on 25 Apr 2019, 14:01 last edited by
                                        #30

                                        @mrjj
                                        Sir. Just wondering how can I access the string value from other functions? I want to use it in other functions.

                                        0_1556204335320_ff86f8e5-34df-453a-887c-a9a1f3df8d9f-image.png

                                        1 Reply Last reply
                                        0
                                        • M Offline
                                          M Offline
                                          mrjj
                                          Lifetime Qt Champion
                                          wrote on 25 Apr 2019, 14:12 last edited by
                                          #31

                                          Hi
                                          what string do you mean ?
                                          The Topic column string from the data base ?

                                          D 1 Reply Last reply 25 Apr 2019, 14:54
                                          2

                                          21/77

                                          22 Apr 2019, 15:34

                                          topic:navigator.unread, 56
                                          • Login

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