Problem with printing struc to tableview
-
Hi,
I can't quite figure out why I'm getting runtime error for this, hopefully someone can shed some light.I declare my struc in the header file
findform.h:
@
struct radiofind
{
QString rsn;
int rid;
QString refID;
QString secgrp;
};
@in my cpp file, i have:
@
QString radio_rsn;
QString radio_rid;
QString radio_rid2;
QString radio_secgrp;
QString combo1;
QString combo2;
QString combo3;
int row;
int col;QVector<radiofind> instance;
Findform::Findform(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Findform)
{
ui->setupUi(this);radiolist = new QStandardItemModel(0,4,this); //Rows and 4 Columns ui->tableView->setModel(radiolist); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); radiolist->setHorizontalHeaderItem(0, new QStandardItem(QString(tr("Radio Serial Number")))); radiolist->setHorizontalHeaderItem(1, new QStandardItem(QString(tr("Radio ID")))); radiolist->setHorizontalHeaderItem(2, new QStandardItem(QString(tr("Radio Reference ID")))); radiolist->setHorizontalHeaderItem(3, new QStandardItem(QString(tr("Security Group")))); ui->tableView->horizontalHeader()->resizeSection(0,180); ui->tableView->horizontalHeader()->resizeSection(1,180); ui->tableView->horizontalHeader()->resizeSection(2,180); ui->tableView->horizontalHeader()->resizeSection(3,180); ui->tableView->setSortingEnabled(true);
// radiofind instance;
instance[0].rsn = "hello";
instance[0].rid = 123;
instance[0].refID = "world";
instance[0].secgrp = "SYSTEM";
instance[1].rsn = "A222";
instance[1].rid = 2222;
instance[1].refID = "AA2222";
instance[1].secgrp = "SYSTEM";
instance[2].rsn = "A3333";
instance[2].rid = 3333;
instance[2].refID = "Test";
instance[2].secgrp = "PRIVATE";// For test - start row = 0; radiolist->insertRow(row); col = 0; radiolist->setData(radiolist->index(row,col),instance[0].rsn); radiolist->setData(radiolist->index(row,++col),instance[0].rid); radiolist->setData(radiolist->index(row,++col),instance[0].refID); radiolist->setData(radiolist->index(row,++col),instance[0].secgrp); row = 1; col = 0; radiolist->insertRow(row); radiolist->setData(radiolist->index(row,col),instance[1].rsn); radiolist->setData(radiolist->index(row,++col),instance[1].rid); radiolist->setData(radiolist->index(row,++col),instance[1].refID); radiolist->setData(radiolist->index(row,++col),instance[1].secgrp); row = 2; col = 0; radiolist->insertRow(row); radiolist->setData(radiolist->index(row,col),instance[2].rsn); radiolist->setData(radiolist->index(row,++col),instance[2].rid); radiolist->setData(radiolist->index(row,++col),instance[2].refID); radiolist->setData(radiolist->index(row,++col),instance[2].secgrp); // For test - end
}
@The code compiles successfully but when i click on the form to load the data into the table, i get this error:
Invalid parameter passed to C runtime function.
ASSERT failure in QVector<T>::operator[]: "index out of range", file ....\5.2.1\mingw48_32\include/QtCore/qvector.h, line 369
Invalid parameter passed to C runtime function. -
radiolist = new QStandardItemModel(0,4,this);
You have created model with zero rows. At line 55 and 63 you are setting the row=1 and row=2. So you are inserting at row 1 and 2. You radioList does not have those rows.
You can initialize this.
radiolist = new QStandardItemModel(10,4,this); If you want 10 rows. I have just taken the example of 10 rows.