I was able to resolve the segmentation faults, but now get the following messages while running

Code:
Object::connect: No such slot Mainwindow::displayinfo(node) in entrytree2.cpp:167
Object::connect: No such slot Mainwindow::adjustroot(newbutton) in entrytree2.cpp:168
Object::connect: No such slot Mainwindow::displaychildren(node->parent) in entrytree2.cpp:169
Object::connect: No such slot Mainwindow::displayinfo(node->parent) in entrytree2.cpp:170
Object::connect: No such slot Mainwindow::adjustroot(node->parent) in entrytree2.cpp:171
Object::connect: No such slot Mainwindow::displaychildren(node) in entrytree2.cpp:166
I have defined the slots as part of Mainwindow class. What could be the reason?
Here is my present code:

Code:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <cstdlib>
#include <sstream>
#include <QtGui>

using namespace std;


char *stringtoarray(string);


class treenode
{
	public:
		string name;
		double efficiency;
		long noofflops;

		unsigned int level;
		treenode *parent;
		vector <treenode *> children;
		void createnode(int h, treenode *r)
		{	
			level=h;
			parent=r;
		}
		void insertchild(treenode *c)
		{
			children.push_back (c);
		}
		void initdata(string &e, double f, long g)
		{
			name=e;
			efficiency=f;
			noofflops=g;
		}
		treenode* traversal(void)
		{
			static vector <treenode*>::size_type p=0;
			if(p<children.size())
			{
				return(children[p]);
				++p;
			}
			else 
			{
				p=0;
				return NULL;
			}
		}
};
treenode *root=NULL;
treenode *curr=NULL;

class Mainwindow : public QDialog, public treenode
{
        Q_OBJECT
        public:
                Mainwindow();
		void createbutton(treenode * node);
        protected:
                void closeevent(QCloseEvent *event);
        private slots:
                void adjustroot(QPushButton *button);
		void displayinfo(treenode  *node);
                void displaychildren(treenode *node);
        private:     
                QLabel *namelabel;
                QLabel *efflabel;
                QLabel *flopslabel;
                QTextEdit *namefield;
                QTextEdit *efffield;
                QTextEdit *flopsfield;
		QHBoxLayout *topleftlayout;
		QHBoxLayout *bottomleftlayout;
		QVBoxLayout *leftlayout;
		QVBoxLayout *rightlayout;
		QHBoxLayout *mainlayout;
		QScrollArea *scrollbox;
		QWidget *scrollwidget;
		QHBoxLayout *scrollboxlayout;
		QRect Rect;
		float factor;
};

Mainwindow::Mainwindow(void)
{
	topleftlayout=new QHBoxLayout;
	bottomleftlayout=new QHBoxLayout;
	leftlayout=new QVBoxLayout;
	rightlayout=new QVBoxLayout;
	mainlayout=new QHBoxLayout;
	namefield=new QTextEdit;
	efffield=new QTextEdit;
	flopsfield=new QTextEdit;
	treenode *tempnode;
	tempnode=root->traversal();
	scrollbox=new QScrollArea;
	scrollbox->setWidgetResizable(true);
	bottomleftlayout->addWidget(scrollbox);
	scrollbox->setFrameShape(QFrame::NoFrame);
	scrollwidget=new QWidget();
	scrollboxlayout=new QHBoxLayout(scrollwidget);
	scrollbox->setWidget(scrollwidget);
	scrollbox->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
	scrollboxlayout->setAlignment(Qt::AlignLeft);
	scrollboxlayout->setSizeConstraint(QLayout::SetMinimumSize);
	while(tempnode!=NULL)
	{
		createbutton(tempnode);
		tempnode=root->traversal();
	}
	Rect=QApplication::desktop()->screenGeometry();
	factor=(float)(Rect.width()/Rect.height());
	setMaximumSize(Rect.width()*0.7/factor, Rect.height()*0.4/factor);
	leftlayout->addLayout(topleftlayout);
	leftlayout->addLayout(bottomleftlayout);
	mainlayout->addLayout(leftlayout);
	mainlayout->addLayout(rightlayout);
}

void Mainwindow::createbutton(treenode *node)
{
	QPushButton *newbutton =new QPushButton;
	newbutton->setDefault(false);
	newbutton->setEnabled(true);
	if(node==root)
	{
		topleftlayout->addWidget(newbutton);
	}
	else
	{
		scrollboxlayout->addWidget(newbutton);
	}
	QObject::connect(newbutton, SIGNAL(pressed()), this, SLOT(displaychildren(node))); 
	QObject::connect(newbutton, SIGNAL(pressed()), this, SLOT(displayinfo(node)));
	QObject::connect(newbutton, SIGNAL(pressed()), this, SLOT(adjustroot(newbutton)));
	QObject::connect(newbutton, SIGNAL(released()), this, SLOT(displaychildren(node->parent)));
	QObject::connect(newbutton, SIGNAL(released()), this, SLOT(displayinfo(node->parent)));
	QObject::connect(newbutton, SIGNAL(released()), this, SLOT(adjustroot(node->parent)));
}

void Mainwindow::displaychildren(treenode *node)
{
	treenode *tempnod;
	tempnod=node->traversal();
	scrollbox->setWidgetResizable(true);
	bottomleftlayout->addWidget(scrollbox);
	scrollbox->setFrameShape(QFrame::NoFrame);
	scrollbox->setWidget(scrollwidget);
	scrollbox->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
	scrollboxlayout->setAlignment(Qt::AlignLeft);
	scrollboxlayout->setSizeConstraint(QLayout::SetMinimumSize);
	while(tempnod!=NULL)
	{
		createbutton(tempnod);
		tempnod=root->traversal();
	}
	Rect=QApplication::desktop()->screenGeometry();
	factor=(float)(Rect.width()/Rect.height());
	setMaximumSize(Rect.width()*0.7/factor, Rect.height()*0.4/factor);
	leftlayout->addLayout(topleftlayout);
	leftlayout->addLayout(bottomleftlayout);
	mainlayout->addLayout(leftlayout);
	mainlayout->addLayout(rightlayout);
}

void Mainwindow::displayinfo(treenode *node)
{
	namefield->insertPlainText(stringtoarray(node->name));
	namefield->setDocumentTitle("Name:");
	rightlayout->addWidget(namefield);
	stringstream ss(stringstream::in|stringstream::out);
	ss<<node->efficiency;
	string s=ss.str();
	QString q1(s.c_str());
	efffield->insertPlainText(q1);
	efffield->setDocumentTitle("Efficiency:");
	rightlayout->addWidget(efffield);
	s.clear();
	ss.str("");
	ss<<node->noofflops;
	s=ss.str();
	QString q2(s.c_str());
	flopsfield->insertPlainText(q2);
	flopsfield->setDocumentTitle("Flops:");
	rightlayout->addWidget(flopsfield);
}	
	

void Mainwindow::adjustroot(QPushButton *button)
{
	topleftlayout->addWidget(button);
}						
	
/*void treenode::createnode(leveldata *a, int h, treenode *r)
{
	data=a;	
	level=h;
}

void treenode::insertchild(treenode *c)
{
	children.push_back (c);
}

void treenode::initdata(char *e, double f, long g,)
{
	name=e;
	efficiency=f;
	noofflops=g;
}*/

int main(int argc, char *argv[])
{
	size_t spaces=0;
	//size_t nextspaces=0;
	size_t pos=0;
	string temp;
	string temp2;
	string levname;
	double eff;
	long flops;
	int flag=1;	
	ifstream myfile("sample.txt");
	if(getline(myfile, temp))
	{
		flag=1;
	}
	else
	{
		flag=0;
		return 1;
	}
	do
	{
		//Separating the data from the line read to initialise the data members of the object	
		for(; temp[pos]!=' '; ++pos)
		{
			temp2.push_back(temp[pos]);
		}
		++pos;
		levname=temp2;
		//size_t j=levname.length();
		char c;
		size_t p=0;
		c=levname[p];
		temp2.clear();
		for(; temp[pos]!=' '; ++pos)
		{
			temp2.push_back(temp[pos]);
		}
		++pos;
		eff=atof(stringtoarray(temp2));
		temp2.clear();
		for(; pos<temp.length(); ++pos)
		{
			temp2.push_back(temp[pos]);
		}
		++pos;
		flops=atol(stringtoarray(temp2));
		temp2.clear();
		//Creating a new node
		treenode *newnode=new treenode;
		newnode->initdata(levname, eff, flops);
		newnode->createnode((unsigned int)spaces, curr);
		if((!newnode->level)||(spaces==0))
		{
			root=newnode;
			curr=newnode;
		}
		//Associating the child to the parent
		curr->insertchild(newnode);
		//Updating the curr pointer to point to the parent for next node to be created 
		if (getline(myfile, temp))
		{
			flag=1;
		}
		else
		{
			flag=0;
			break;
		}
		spaces=0;
		while(temp[spaces]==' ')
		{
			++spaces;
		}
		if(spaces>newnode->level)
		{
			curr=newnode;
		}
		else if(spaces<newnode->level)
		{
			treenode *temporary=newnode;
			while(!(temporary->level<spaces))
			{
				temporary=temporary->parent;
			}
			curr=temporary;
		}
		pos=spaces;
	}while(flag==1);
	QApplication app(argc, argv);
	Mainwindow *mywindow=new Mainwindow;
	mywindow->show();
	return app.exec();
}

char *stringtoarray(string s)
{
	char *a=new char[s.size()+1];
	memcpy(a, s.c_str(), s.size());
	a[s.size()]='\0';
	return a;
}
		
#include "entrytree2.moc"