Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. Qt first project
Forum Updated to NodeBB v4.3 + New Features

Qt first project

Scheduled Pinned Locked Moved Qt Creator and other tools
59 Posts 7 Posters 24.9k Views 5 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.
  • N nick784512

    In main.cpp?

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

    @nick784512 I would suggest you to create a simple widgets application and play a bit with it. You will see how Qt widgets applications are usually implemented. See http://doc.qt.io/qtcreator/creator-writing-program.html
    Asking others to send you an implementation is not really the right way to learn. Best is "learning by doing" and asking specific questions if you're stuck.

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

    1 Reply Last reply
    1
    • N Offline
      N Offline
      nick784512
      wrote on last edited by nick784512
      #33

      I have tried this one: https://www.youtube.com/watch?v=UD78xyKbrfk
      and I connected the arduino to the COM3 with a program that sends 2 3 2 3... but the Qt program does not display the 2 3 2 3 ....

      mrjjM 1 Reply Last reply
      0
      • N nick784512

        I have tried this one: https://www.youtube.com/watch?v=UD78xyKbrfk
        and I connected the arduino to the COM3 with a program that sends 2 3 2 3... but the Qt program does not display the 2 3 2 3 ....

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

        @nick784512
        In that video, he mere set the text he gets to a QLabel
        MainWindow::serialReceived .
        If it should respond to anything you must program it yourself.

        Please show what you changed it into to reply ? :)

        1 Reply Last reply
        0
        • N Offline
          N Offline
          nick784512
          wrote on last edited by
          #35

          $$$$$$$$$$$$$$$serialGui.pro$$$$$$$$$$$$$$$$$$

          #-------------------------------------------------

          Project created by QtCreator 2016-12-06T15:42:10

          #-------------------------------------------------

          QT += core gui serialport

          greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

          TARGET = serialGui
          TEMPLATE = app

          SOURCES += main.cpp
          mainwindow.cpp

          HEADERS += mainwindow.h

          FORMS += mainwindow.ui

          $$$$$$$$$$$$$$$$$$mainwindow.h$$$$$$$$$$$$$$$$$$$$$$$$$

          #ifndef MAINWINDOW_H
          #define MAINWINDOW_H

          #include <QMainWindow>

          namespace Ui {
          class MainWindow;
          }

          class MainWindow : public QMainWindow
          {
          Q_OBJECT

          public:
          explicit MainWindow(QWidget *parent = 0);
          ~MainWindow();

          private slots:
          void serialReceived();

          private:
          Ui::MainWindow *ui;
          };

          #endif // MAINWINDOW_H

          $$$$$$$$$$$$$$$$$$$$main.cpp$$$$$$$$$$$$$$$$$$$$$$$$$$$

          #include "mainwindow.h"
          #include <QApplication>

          int main(int argc, char *argv[])
          {
          QApplication a(argc, argv);
          MainWindow w;
          w.show();

          return a.exec();
          

          }

          $$$$$$$$$$$$$$$$$$$mainwindow.cpp$$$$$$$$$$$$$$$$$$$$$$$

          #include "mainwindow.h"
          #include "ui_mainwindow.h"
          #include <QtSerialPort>
          #include <QDebug>

          QSerialPort *serial;

          MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
          {
          ui->setupUi(this);
          serial = new QSerialPort(this);
          serial->setPortName("COM3");
          serial->setBaudRate(QSerialPort::Baud9600);
          serial->setDataBits(QSerialPort::Data8);
          serial->setParity(QSerialPort::NoParity);
          serial->setStopBits(QSerialPort::OneStop);
          serial->setFlowControl(QSerialPort::NoFlowControl);
          serial->open(QIODevice::ReadWrite);
          serial->write("hello");
          serial->close();
          connect(serial,SIGNAL(readyRead()),this,SLOT(serialReceived()));
          }

          MainWindow::~MainWindow()
          {
          delete ui;
          serial->close();
          }

          void MainWindow::serialReceived()
          {
          QByteArray ba;
          ba=serial->readAll();
          ui->label->setText(ba);
          qDebug()<<ba;
          }

          $$$$$$$$$$$$$$$$mainwindow.ui$$$$$$$$$$$$$$$$$$$$$$$$$

          <?xml version="1.0" encoding="UTF-8"?>
          <ui version="4.0">
          <class>MainWindow</class>
          <widget class="QMainWindow" name="MainWindow">
          <property name="geometry">
          <rect>
          <x>0</x>
          <y>0</y>
          <width>400</width>
          <height>300</height>
          </rect>
          </property>
          <property name="windowTitle">
          <string>MainWindow</string>
          </property>
          <widget class="QWidget" name="centralWidget">
          <widget class="QLabel" name="label">
          <property name="geometry">
          <rect>
          <x>50</x>
          <y>60</y>
          <width>121</width>
          <height>41</height>
          </rect>
          </property>
          <property name="text">
          <string>TextLabel</string>
          </property>
          </widget>
          </widget>
          <widget class="QMenuBar" name="menuBar">
          <property name="geometry">
          <rect>
          <x>0</x>
          <y>0</y>
          <width>400</width>
          <height>21</height>
          </rect>
          </property>
          </widget>
          <widget class="QToolBar" name="mainToolBar">
          <attribute name="toolBarArea">
          <enum>TopToolBarArea</enum>
          </attribute>
          <attribute name="toolBarBreak">
          <bool>false</bool>
          </attribute>
          </widget>
          <widget class="QStatusBar" name="statusBar"/>
          </widget>
          <layoutdefault spacing="6" margin="11"/>
          <resources/>
          <connections/>
          </ui>

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

            Why are you closing your serial port in the constructor ? You won't receive anything doing so.

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

            N 1 Reply Last reply
            1
            • SGaistS SGaist

              Why are you closing your serial port in the constructor ? You won't receive anything doing so.

              N Offline
              N Offline
              nick784512
              wrote on last edited by
              #37

              @SGaist

              I disabled it. Again, nothing received.

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

                You also don't check whether open was successful.

                You should rather move the call to write outside the constructor. e.g. in a slot connected to a push button.

                And make serial a member of MainWindow.

                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
                • N Offline
                  N Offline
                  nick784512
                  wrote on last edited by
                  #39

                  Thank you! I cannot understand how the tutorial video in youtube works and the same configuration and coding in my project does not work.

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

                    Did you check that the settings of the serial ports are really what you need to use with your device ?

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

                    N 1 Reply Last reply
                    0
                    • SGaistS SGaist

                      Did you check that the settings of the serial ports are really what you need to use with your device ?

                      N Offline
                      N Offline
                      nick784512
                      wrote on last edited by
                      #41

                      @SGaist

                      1)How do I check if the serial opened succefully?
                      2)I disabled write.
                      3)Do you mean to make it private member of MainWindow?

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #42
                        1. Please read the documentation, the open function returns a boolean value saying whether it succeeded or not
                        2. Where did you put the call to write ?
                        3. Yes

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

                        N 1 Reply Last reply
                        0
                        • SGaistS SGaist
                          1. Please read the documentation, the open function returns a boolean value saying whether it succeeded or not
                          2. Where did you put the call to write ?
                          3. Yes
                          N Offline
                          N Offline
                          nick784512
                          wrote on last edited by nick784512
                          #43

                          @SGaist

                          1)Ok, I will try it.
                          2)I just commented it.
                          3) I wrote QSerialPort *serial; under private and it shows error

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

                            What error ?

                            If you comment the call to write then don't expect anything particular to happen.

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

                            N 1 Reply Last reply
                            0
                            • SGaistS SGaist

                              What error ?

                              If you comment the call to write then don't expect anything particular to happen.

                              N Offline
                              N Offline
                              nick784512
                              wrote on last edited by
                              #45

                              @SGaist

                              C:\Users\geo\Documents\serialGui\mainwindow.h:27: error: 'QSerialPort' does not name a type
                              QSerialPort *serial;
                              ^

                              I don't want to write something in COM from Qt, I want to "listen" from Arduino the sequence 232323... and print on the Qt application

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

                                It's nothing Qt related, that's basic C++. You really should grab a good book on the matter.

                                Search for "Forward declaration".

                                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
                                • N Offline
                                  N Offline
                                  nick784512
                                  wrote on last edited by
                                  #47

                                  I know C, not C++. Are they so different?

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

                                    There are some key concepts that are pretty different yes.

                                    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
                                    • N Offline
                                      N Offline
                                      nick784512
                                      wrote on last edited by
                                      #49

                                      And I should learn C++ for just this little error?

                                      Can someone help me to make it work?

                                      JKSHJ 1 Reply Last reply
                                      0
                                      • N Offline
                                        N Offline
                                        nick784512
                                        wrote on last edited by nick784512
                                        #50

                                        $$$$$$$$$$$$$$$$$$$$$serialGui.pro$$$$$$$$$$$$$$$$$$$$$$$$$$

                                        #-------------------------------------------------

                                        Project created by QtCreator 2016-12-06T15:42:10

                                        #-------------------------------------------------

                                        QT += core gui serialport

                                        greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                                        TARGET = serialGui
                                        TEMPLATE = app

                                        SOURCES += main.cpp
                                        mainwindow.cpp

                                        HEADERS += mainwindow.h

                                        FORMS += mainwindow.ui

                                        $$$$$$$$$$$$$$$$$ mainwindow.h $$$$$$$$$$$$$$$$$$$$$$$$$$

                                        #ifndef MAINWINDOW_H
                                        #define MAINWINDOW_H

                                        #include <QMainWindow>

                                        namespace Ui {
                                        class MainWindow;
                                        }

                                        class MainWindow : public QMainWindow
                                        {
                                        Q_OBJECT

                                        public:
                                        explicit MainWindow(QWidget *parent = 0);
                                        ~MainWindow();

                                        private slots:
                                        void serialReceived();

                                        void on_pushButton_released();
                                        

                                        private:
                                        Ui::MainWindow *ui;

                                        QSerialPort *serial;
                                        

                                        };

                                        #endif // MAINWINDOW_H

                                        $$$$$$$$$$$$$$$ main.cpp $$$$$$$$$$$$$$$$$$$$$$$$$

                                        #include "mainwindow.h"
                                        #include <QApplication>

                                        int main(int argc, char *argv[])
                                        {
                                        QApplication a(argc, argv);
                                        MainWindow w;
                                        w.show();

                                        return a.exec();
                                        

                                        }

                                        $$$$$$$$$$$$$$$$$$$$$$ mainwindow.cpp $$$$$$$$$$$$$$$$$$$$$$$$

                                        #include "mainwindow.h"
                                        #include "ui_mainwindow.h"
                                        #include <QtSerialPort>
                                        #include <QDebug>

                                        QSerialPort *serial;

                                        MainWindow::MainWindow(QWidget *parent) :
                                        QMainWindow(parent),
                                        ui(new Ui::MainWindow)
                                        {
                                        if (serial->open(QIODevice::ReadWrite))
                                        {
                                        ui->setupUi(this);
                                        serial = new QSerialPort(this);
                                        serial->setPortName("COM3");
                                        serial->setBaudRate(QSerialPort::Baud9600);
                                        serial->setDataBits(QSerialPort::Data8);
                                        serial->setParity(QSerialPort::NoParity);
                                        serial->setStopBits(QSerialPort::OneStop);
                                        serial->setFlowControl(QSerialPort::NoFlowControl);
                                        serial->open(QIODevice::ReadWrite);
                                        //serial->write("hello");
                                        serial->close();
                                        connect(serial,SIGNAL(readyRead()),this,SLOT(serialReceived()));
                                        }
                                        else
                                        {
                                        QMessageBox::critical(this, tr("Error"), serial->errorString());
                                        showStatusMessage(tr("Open error"));
                                        }
                                        }

                                        MainWindow::~MainWindow()
                                        {
                                        delete ui;
                                        serial->close();
                                        }

                                        void MainWindow::serialReceived()
                                        {
                                        QByteArray ba;
                                        ba=serial->readAll();
                                        ui->label->setText(ba);
                                        //qDebug()<<ba;
                                        }

                                        $$$$$$$$$$$$$$$$$$$ mainwindow.ui $$$$$$$$$$$$$$$$$$$$$$$$$$

                                        <?xml version="1.0" encoding="UTF-8"?>
                                        <ui version="4.0">
                                        <class>MainWindow</class>
                                        <widget class="QMainWindow" name="MainWindow">
                                        <property name="geometry">
                                        <rect>
                                        <x>0</x>
                                        <y>0</y>
                                        <width>400</width>
                                        <height>300</height>
                                        </rect>
                                        </property>
                                        <property name="windowTitle">
                                        <string>MainWindow</string>
                                        </property>
                                        <widget class="QWidget" name="centralWidget">
                                        <widget class="QLabel" name="label">
                                        <property name="geometry">
                                        <rect>
                                        <x>50</x>
                                        <y>60</y>
                                        <width>121</width>
                                        <height>41</height>
                                        </rect>
                                        </property>
                                        <property name="text">
                                        <string>TextLabel</string>
                                        </property>
                                        </widget>
                                        </widget>
                                        <widget class="QMenuBar" name="menuBar">
                                        <property name="geometry">
                                        <rect>
                                        <x>0</x>
                                        <y>0</y>
                                        <width>400</width>
                                        <height>21</height>
                                        </rect>
                                        </property>
                                        </widget>
                                        <widget class="QToolBar" name="mainToolBar">
                                        <attribute name="toolBarArea">
                                        <enum>TopToolBarArea</enum>
                                        </attribute>
                                        <attribute name="toolBarBreak">
                                        <bool>false</bool>
                                        </attribute>
                                        </widget>
                                        <widget class="QStatusBar" name="statusBar"/>
                                        </widget>
                                        <layoutdefault spacing="6" margin="11"/>
                                        <resources/>
                                        <connections/>
                                        </ui>

                                        1 Reply Last reply
                                        0
                                        • N nick784512

                                          And I should learn C++ for just this little error?

                                          Can someone help me to make it work?

                                          JKSHJ Offline
                                          JKSHJ Offline
                                          JKSH
                                          Moderators
                                          wrote on last edited by
                                          #51

                                          @nick784512 said in Qt first project:

                                          And I should learn C++ for just this little error?

                                          You should learn C++ to use a C++ toolkit.

                                          It feels like a "little error" now, but you will encounter this in most (if not all) of your C++ projects.

                                          Can someone help me to make it work?

                                          @SGaist already gave you the answer: You need to add a Forward Declaration for QSerialPort in mainwindow.h.

                                          Also remember to #include <QSerialPort> in mainwindow.cpp

                                          Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                                          1 Reply Last reply
                                          3

                                          • Login

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