View Full Version : Segmentation fault error
Niamita
23rd April 2012, 07:57
Hi all
I am facing a error segmentation fault in the following code
mapper = new QSignalMapper ();
for(int i=0; i<obj_schedule_table->rowCount(); i++)
{
QWidget *widget1;
widget1 = obj_schedule_table->cellWidget(i,3);
QComboBox *combo = dynamic_cast<QComboBox*>(widget1->children().at(1));
combo->setEditable(false);
mapper->setMapping(combo, i);
connect(combo, SIGNAL(activated(QString)), mapper, SLOT (map()));
}
connect(mapper, SIGNAL(mapped(int)), this, SLOT(set_item_combobox_type(int)));
I know it may be due to my code is pointing some null pointer but i am not understanding what is the cause of error.
Thanks in advance.
Jonny174
23rd April 2012, 08:33
mapper = new QSignalMapper();
for (int i=0; i < obj_schedule_table->rowCount(); i++)
{
QWidget *widget1 = obj_schedule_table->cellWidget( i, 3 );
QComboBox *combo = dynamic_cast<QComboBox *>( widget1->children().at(1) );
if (combo)
{
combo->setEditable( false );
mapper->setMapping( combo, i );
connect(combo, SIGNAL(activated(QString)), mapper, SLOT (map()));
}
}
connect(mapper, SIGNAL(mapped(int)), this, SLOT(set_item_combobox_type(int)));
widget1->children().at(1)? Maybe widget1->children().count() < 1?
Niamita
23rd April 2012, 11:42
Does anybody help me what is wrong with above code.
wysota
23rd April 2012, 12:29
Either widget1 or widget1->children().at(1) is an invalid pointer.
nish
23rd April 2012, 12:36
did you tried to step debug your code?
d_stranz
23rd April 2012, 17:00
If you don't know how to use the debugger (and if you don't, how do you expect to become a good programmer?), modify your code to tell you what's wrong:
#include <QMessageBox>
mapper = new QSignalMapper ();
if ( obj_schedule_table != 0 )
{
for(int i=0; i<obj_schedule_table->rowCount(); i++)
{
QWidget * widget1 = obj_schedule_table->cellWidget(i,3);
if ( widget1 != 0 )
{
QComboBox * combo = dynamic_cast<QComboBox*>(widget1->children().at(1));
if ( combo != 0 )
{
combo->setEditable(false);
mapper->setMapping(combo, i);
connect(combo, SIGNAL(activated(QString)), mapper, SLOT (map()));
}
else
QMessageBox::critical( this, "Error", "Pointer to combo is NULL" );
}
else
QMessageBox::critical( this, "Error", "Pointer to widget1 is NULL" );
}
}
else
QMessageBox::critical( this, "Error", "Pointer to obj_schedule_table is NULL" );
connect(mapper, SIGNAL(mapped(int)), this, SLOT(set_item_combobox_type(int)));
Which message box do you see? That should give you a clue about where to look to solve the problem.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.