Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Example MVC in Qt C++
Forum Updated to NodeBB v4.3 + New Features

Example MVC in Qt C++

Scheduled Pinned Locked Moved Unsolved General and Desktop
13 Posts 2 Posters 5.8k Views
  • 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.
  • jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #2

    Take a look at this introduction:
    http://doc.qt.io/qt-5.5/model-view-programming.html

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

    R 1 Reply Last reply
    0
    • jsulmJ jsulm

      Take a look at this introduction:
      http://doc.qt.io/qt-5.5/model-view-programming.html

      R Offline
      R Offline
      Renn
      wrote on last edited by
      #3

      @jsulm Qt means no MVC, but the Model View and Delegate?

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

        Yes, that's the Qt way to do it

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

        R 1 Reply Last reply
        0
        • jsulmJ jsulm

          Yes, that's the Qt way to do it

          R Offline
          R Offline
          Renn
          wrote on last edited by
          #5

          @jsulm ModelViewDelegate in one file if it can be called ModelViewDelegate?

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

            Why in one file? You should separate the model, view and delegate even on file level.

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

            R 1 Reply Last reply
            0
            • jsulmJ jsulm

              Why in one file? You should separate the model, view and delegate even on file level.

              R Offline
              R Offline
              Renn
              wrote on last edited by
              #7

              @jsulm I need an example of a project so that I was not confused

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

                On the side I provided you there are links to examples:
                http://doc.qt.io/qt-5.5/model-view-programming.html#related-examples

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

                R 1 Reply Last reply
                0
                • jsulmJ jsulm

                  On the side I provided you there are links to examples:
                  http://doc.qt.io/qt-5.5/model-view-programming.html#related-examples

                  R Offline
                  R Offline
                  Renn
                  wrote on last edited by
                  #9

                  @jsulm Code like this can be called Model View Delegate?

                  MVC.pro
                  QT += core gui

                  greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                  TARGET = MVC
                  TEMPLATE = app

                  SOURCES += main.cpp
                  mvc.cpp
                  model.cpp

                  HEADERS += mvc.h
                  model.h

                  FORMS += mvc.ui

                  model.h

                  #ifndef MODEL_H
                  #define MODEL_H

                  #include <QDialog>

                  class Model : public QDialog
                  {
                  Q_OBJECT

                  public:
                  explicit Model(QWidget *parent = 0);

                  signals:
                  void sendFromData(int);

                  private slots:
                  void receiveData(QStringList);

                  public slots:

                  private:
                  int hitung1, hitung2;

                  };

                  #endif // MODEL_H

                  mvc.h

                  #ifndef MVC_H
                  #define MVC_H

                  #include <QMainWindow>
                  #include "model.h"

                  namespace Ui {
                  class Mvc;
                  }

                  class Mvc : public QMainWindow
                  {
                  Q_OBJECT

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

                  private slots:
                  void on_hitungAngka_clicked();

                  void receiveFromData(int);
                  

                  signals:
                  void sendData(QStringList);

                  private:
                  Ui::Mvc *ui;

                  Model *model;
                  
                  int angkaPertama, angkaKedua;
                  

                  };

                  #endif // MVC_H

                  main.cpp

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

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

                  return a.exec();
                  

                  }

                  model.cpp

                  #include "model.h"
                  #include <QDebug>

                  Model::Model(QWidget *parent) :
                  QDialog(parent)
                  {
                  }
                  void Model::receiveData(QStringList sl)
                  {
                  int hasil;
                  hitung1 = sl[0].toInt();
                  hitung2 = sl[1].toInt();
                  hasil = hitung1 + hitung2;
                  emit sendFromData(hasil);
                  }

                  mvc.cpp

                  #include "mvc.h"
                  #include "ui_mvc.h"
                  #include <QDebug>

                  Mvc::Mvc(QWidget *parent) :
                  QMainWindow(parent),
                  ui(new Ui::Mvc)
                  {
                  ui->setupUi(this);
                  }

                  Mvc::~Mvc()
                  {
                  delete ui;
                  }

                  void Mvc::on_hitungAngka_clicked()
                  {
                  model = new Model(this);
                  QStringList sl;
                  sl.append(ui->input1->text());
                  sl.append(ui->input2->text());
                  connect(this, SIGNAL(sendData(QStringList)), model, SLOT(receiveData(QStringList)));
                  connect(model, SIGNAL(sendFromData(int)), this, SLOT(receiveFromData(int)));
                  emit sendData(sl);
                  }

                  void Mvc::receiveFromData(int hasil)
                  {
                  qDebug() << hasil;
                  }

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

                    No:
                    Model has to be a subclass of QAbstractItemModel (see http://doc.qt.io/qt-4.8/model-view-programming.html#model-classes).
                    Not sure why you subclass QMainWindow.

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

                    R 3 Replies Last reply
                    0
                    • jsulmJ jsulm

                      No:
                      Model has to be a subclass of QAbstractItemModel (see http://doc.qt.io/qt-4.8/model-view-programming.html#model-classes).
                      Not sure why you subclass QMainWindow.

                      R Offline
                      R Offline
                      Renn
                      wrote on last edited by
                      #11

                      @jsulm Is it in the file model.cpp, and model.h?

                      1 Reply Last reply
                      0
                      • jsulmJ jsulm

                        No:
                        Model has to be a subclass of QAbstractItemModel (see http://doc.qt.io/qt-4.8/model-view-programming.html#model-classes).
                        Not sure why you subclass QMainWindow.

                        R Offline
                        R Offline
                        Renn
                        wrote on last edited by
                        #12

                        @jsulm What should i change?

                        1 Reply Last reply
                        0
                        • jsulmJ jsulm

                          No:
                          Model has to be a subclass of QAbstractItemModel (see http://doc.qt.io/qt-4.8/model-view-programming.html#model-classes).
                          Not sure why you subclass QMainWindow.

                          R Offline
                          R Offline
                          Renn
                          wrote on last edited by
                          #13

                          @jsulm I have another project, this code can be called Model View Delegate?

                          ModView.pro

                          QT += core gui

                          greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                          TARGET = ModView
                          TEMPLATE = app

                          SOURCES += main.cpp
                          dialog.cpp

                          HEADERS += dialog.h

                          FORMS += dialog.ui

                          dialog.h

                          #ifndef DIALOG_H
                          #define DIALOG_H

                          #include <QDialog>
                          #include <QtGui>
                          #include <QtCore>

                          namespace Ui {
                          class Dialog;
                          }

                          class Dialog : public QDialog
                          {
                          Q_OBJECT

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

                          private slots:
                          void on_insert_clicked();

                          void on_update_clicked();
                          
                          void on_delete_2_clicked();
                          

                          private:
                          Ui::Dialog *ui;
                          QStringListModel *model;
                          };

                          #endif // DIALOG_H

                          dialog.cpp

                          #include "dialog.h"
                          #include "ui_dialog.h"

                          Dialog::Dialog(QWidget *parent) :
                          QDialog(parent),
                          ui(new Ui::Dialog)
                          {
                          ui->setupUi(this);
                          model = new QStringListModel(this);
                          QStringList list;
                          model->setStringList(list);
                          ui->listView->setModel(model);
                          ui->comboBox->setModel(model);

                          ui->listView->setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked);
                          

                          }

                          Dialog::~Dialog()
                          {
                          delete ui;
                          }

                          //insert
                          void Dialog::on_insert_clicked()
                          {
                          int row = model->rowCount();
                          model->insertRows(row,1);

                          QModelIndex index = model->index(row);
                          ui->listView->setCurrentIndex(index);
                          ui->listView->edit(index);
                          

                          }

                          //update
                          void Dialog::on_update_clicked()
                          {
                          int row = ui->listView->currentIndex().row();
                          model->insertRows(row,1);

                          QModelIndex index = model->index(row);
                          ui->listView->setCurrentIndex(index);
                          ui->listView->edit(index);
                          

                          }

                          //delete
                          void Dialog::on_delete_2_clicked()
                          {
                          model->removeRows(ui->listView->currentIndex().row(),1);
                          }

                          main.cpp

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

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

                          return a.exec();
                          

                          }

                          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