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. Not able to add model to the main window..
Forum Updated to NodeBB v4.3 + New Features

Not able to add model to the main window..

Scheduled Pinned Locked Moved General and Desktop
3 Posts 3 Posters 1.9k Views 1 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 Offline
    M Offline
    MKSPulok
    wrote on last edited by
    #1

    hi, I've the following code

    mymodel.h

    @#ifndef MYMODEL_H
    #define MYMODEL_H

    #include <QAbstractTableModel>

    #include <QString>

    const int COLS= 3;
    const int ROWS= 3;

    class MyModel : public QAbstractTableModel
    {
    Q_OBJECT
    public:
    MyModel(QObject *parent);
    int rowCount(const QModelIndex &parent = QModelIndex()) const ;
    int columnCount(const QModelIndex &parent = QModelIndex()) const;
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;

     bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
          Qt::ItemFlags flags(const QModelIndex & index) const ;
    

    private:
    QString m_gridData[ROWS][COLS]; //holds text entered into QTableView

    signals:

          void editCompleted(const QString &);
    

    };

    #endif // MYMODEL_H
    @

    mymodel.cpp

    @#include "mymodel.h"

    MyModel::MyModel(QObject *parent)
    :QAbstractTableModel(parent)
    {
    }

    int MyModel::rowCount(const QModelIndex & /parent/) const
    {
    return 3;
    }

    int MyModel::columnCount(const QModelIndex & /parent/) const
    {
    return 3;
    }

    QVariant MyModel::data(const QModelIndex &index, int role) const
    {
    if (role == Qt::DisplayRole)
    {
    return QString("Row%1, Column%2")
    .arg(index.row() + 1)
    .arg(index.column() +1);
    }
    return QVariant();
    }

    QVariant MyModel::headerData(int section, Qt::Orientation orientation, int role) const
    {
    if (role == Qt::DisplayRole)
    {
    //////////////////////////////////////////Column Name
    if (orientation == Qt::Horizontal) {
    switch (section)
    {
    case 0:
    return QString("Column-1");
    case 1:
    return QString("Column-2");
    case 2:
    return QString("Column-3");
    }
    }

          /////////////////////////////////////////////Row Name
    
          if (orientation == Qt::Vertical) {
              switch (section)
              {
              case 0:
                  return QString("Row-1");
              case 1:
                  return QString("Row-2");
              case 2:
                  return QString("Row-3");
              }
          }
    
      }
    
      return QVariant();
    

    }

    bool MyModel::setData(const QModelIndex & index, const QVariant & value, int role)
    {
    if (role == Qt::EditRole)
    {
    //save value from editor to member m_gridData
    m_gridData[index.row()][index.column()] = value.toString();
    //for presentation purposes only: build and emit a joined string
    QString result;
    for(int row= 0; row < ROWS; row++)
    {
    for(int col= 0; col < COLS; col++)
    {
    result += m_gridData[row][col] + " ";
    }
    }
    emit editCompleted( result );
    }
    return true;
    }

    Qt::ItemFlags MyModel::flags(const QModelIndex & /index/) const
    {
    return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled ;
    }
    @

    mainwindow.h

    @#ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QtGui/QTableView>
    #include "mymodel.h"

    #include <QMainWindow>

    class MyModel;

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

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

    private:
    Ui::MainWindow *ui;

    MyModel* model;
    

    };

    #endif // MAINWINDOW_H
    @

    mainwindow.cpp

    @#include "MainWindow.h"
    #include "ui_MainWindow.h"
    #include <QTableView>

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);
    model=new MyModel(this);
    QTableView tableView;
    tableView.setModel( &model );

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }
    @

    and a main.cpp

    @#include <QtGui/QApplication>
    #include "MainWindow.h"

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

    return a.exec&#40;&#41;;
    

    }
    @

    My task is to created model is attached in the main window.But My code gives me the following error..
    1.no matching function for call to 'QTableView::setModel(MyModel**)'

    tell me am I on the right track or not and how to remove that problem(any one plz help)

    1 Reply Last reply
    0
    • D Offline
      D Offline
      derf_r
      wrote on last edited by
      #2

      hello

      try to replace :
      tableView.setModel( &model );
      by
      tableView.setModel( model );

      frédéric

      1 Reply Last reply
      0
      • G Offline
        G Offline
        goetz
        wrote on last edited by
        #3

        Your table view is created on the stack. As soon as the variable goes out of scpe - here: your constructor has finished - it is destroyed. Use a pointer and heap allocation:

        @
        QTableView *tableView = new QTableView(this);
        tableView->setModel(model);
        @

        Also, make sure to make the view the central widget or add it to a layout.

        http://www.catb.org/~esr/faqs/smart-questions.html

        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