Помогите, пожалуйста, диалог отладить. Есть класс DepartmentDialog. В нем объявлены модель model1 (QSqlTableModel) и представление view1(QTableView). Еще у класса есть метод add_row. Так вот когда обращаешься к model1 и view1 внутри DepartmentDialog::DepartmentDialog - все работает корректно, а когда из метода add_row - сегфолтится. Всю голову уже сломал :(
departmentdialog.h
#ifndef DEPARTMENTDIALOG_H
#define DEPARTMENTDIALOG_H
#include <QDialog>
#include <QtGui>
#include <QtSql>
//static QSqlTableModel model;
class DepartmentDialog: public QDialog
{
Q_OBJECT
public:
DepartmentDialog(QWidget *parent = 0);
private:
QSqlTableModel *model1;
QTableView *view1;
QPushButton *add_button;
QHBoxLayout *main_layout;
public slots:
void add_row();
//void del_row();
};
#endif // DEPARTMENTDIALOG_H
departmentdialog.cpp
#include "departmentdialog.h"
#include <QDialog>
#include <QtGui>
#include <QtSql>
#include <dbconnectdialog.h>
DepartmentDialog::DepartmentDialog(QWidget *parent):QDialog(parent)
{
//db.close();
QSqlDatabase mydb = QSqlDatabase::addDatabase("QMYSQL");
mydb.setHostName("localhost");
mydb.setDatabaseName("mydb");
mydb.setUserName("root");
mydb.setPassword("something");
mydb.open();
QLabel *main_label = new QLabel("тест");
QPushButton *add_button = new QPushButton("add");
QHBoxLayout *main_layout = new QHBoxLayout;
setLayout(main_layout);
main_layout->addWidget(main_label);
main_layout->addWidget(add_button);
QSqlTableModel *model1 = new QSqlTableModel;
model1->setTable("Departments");
model1->select();
QTableView *view1 = new QTableView;
main_layout->addWidget(view1);
view1->setModel(model1);
view1->show();
//Следующая строка всегда работает корректно:
int row = model1->rowCount();
qDebug()<< row;
//add_row();
connect(add_button, SIGNAL(pressed()), this, SLOT(add_row()) );
}
void DepartmentDialog::add_row()
{
//А из-за этой происходит сегфолт:
int row = model1->rowCount();
qDebug() << row;
model1->insertRow(0);
model1->submitAll();
}