Skip to content

Cpp Qt Programming

Sagen Soren edited this page Nov 29, 2020 · 1 revision

Welcome to the QT-Tutorial-notes wiki!

C++ Qt Programming

Index


Hello World

  • go to File > New and then choose the QT Console Application template.
  • Now configure your project.

In the main.cpp file include the QDebug header file.

#include<QDebug>

Inside the main function call the qDebug() function.

qDebug() << "Hello World";

alternatively you can declare a QString and assign "Hello World" to it.

QString mStr = "Hello World";
qDebug() << mStr;

Qt GUI Application

This time create a QT GUI Application from File > New

The main.cpp GUI application is similar to the console application except this one has these extra lines

MainWindow w;
w.show();

this generates the class MainWindow; inside the namespace Ui in mainwindow.h file.

  • Inside the class definition there is a macro Q_OBJECT.
  • Everything in QT is a QOBJECT

In mainwindow.cpp , the ui->setupUi(this) creates user interface. Inside the mainwindow.ui create a pushButton i.e. drag and drop it in the Design panel. The ui pointer holds a reference to the pushButton and in the mainwindow.cpp you can use it like this

ui->pushButton->setText("Close")

If you hover over you can see F1 and press it to go to the help file for QPushButton

Go to the Design Mode > Edit Signal and Slots and connect the button to the form and configure it to clicked() and closed(). Now build and run the GUI app. If you press the button it will close the form.

Signal and Slots

connect() is used to connect the signal-slot path. e.g.

connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
        ui->progressBar,SLOT(setValue(int)))

It takes a sender which is a QObject * and generate a signal to send to the receiver which is another QObject * and the SLOT receives the signal.

disconnect() does the opposite of connect() i.e. to disconnect the signal slot mechanism.

disconnect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
        ui->progressBar,SLOT(setValue(int)))

Displaying Windows

  • A QAction helps you to trigger an event.
  • In the design panel, Create a menu Item and make an action. After that drag and drop it into the tool Bar.
  • Right click on the action and Go to slot..
  • after selecting the signal it will generate the code.

In the design panel drag and drop a Plain Text Editor and inside the mainwindow.cpp

setCentralWidget(ui->plainTextEdit);

It will help to take the majority of space.

Forms

right click on Forms select Qt and select Qt Designer Form Class . In the design panel design the form. To show this:

  • Modal : can not interact with other windows
    • void MainWindow::on_actionNew_Window_triggered()
      {
           MyDialog mDiaog;
           mDialog.setModal(true);
           mDilog.exec();
      }
      
  • Modaless : can interact with multiple windows
    • In mainwindow.h #include "mydialog.h" and create a private: object pointer MyDialog *mDialog.
    • In mainwindow.cpp
      void MainWindow::on_actionNew_Window_triggered()
      {
           mDialog = new MyDialog(this);
           mDialog->show();
      }
      
Clone this wiki locally