Project

General

Profile

Segmentation fault with WStandardItemModel after clear() ... ยป wtPROB0730.cpp

Source code that shows problem. - Richard Bingham, 07/31/2014 07:16 AM

 
/*
*/


#include <errno.h>
#include <stdlib.h>


#include <Wt/WApplication>
#include <Wt/WBreak>
#include <Wt/WContainerWidget>
#include <Wt/WPushButton>
#include <Wt/WText>
#include <Wt/WStandardItemModel>
#include <Wt/WStandardItem>
#include <Wt/WTable>
#include <Wt/WTabWidget>
#include <Wt/WTableView>
#include <Wt/WVBoxLayout>
#include <Wt/WHBoxLayout>
#include <Wt/WAbstractItemView>
#include <Wt/WDialog>

/***********************************************************************/
using namespace Wt;
/***********************************************************************/
class WtWebApplication : public WApplication
{
public:
WtWebApplication(const WEnvironment& env);
~WtWebApplication();

WTabWidget *mtab;
WVBoxLayout *rvb;
WHBoxLayout *thb;
WHBoxLayout *bhb;
WContainerWidget *TermTab;
WTableView *Termtv;
WStandardItemModel *Termsim;

};


WtWebApplication::WtWebApplication(const WEnvironment& env)
: WApplication(env)
{
WHBoxLayout *hb;


rvb = new WVBoxLayout();
root()->setLayout(rvb,Wt::AlignJustify);
rvb->addLayout((thb = new WHBoxLayout()),0,Wt::AlignJustify);
//mtab = new WTabWidget();
//rvb->addWidget(mtab,1,Wt::AlignJustify);
rvb->addLayout((bhb = new WHBoxLayout()),0,Wt::AlignJustify);

TermTab = new WContainerWidget();
//mtab->addTab(TermTab,"Terminals" /*,Wt::WTabWidget::PreLoading */);
rvb->addWidget(TermTab,1,Wt::AlignJustify);

Termtv = new WTableView();
hb = new WHBoxLayout();
TermTab->setLayout(hb,Wt::AlignJustify);
hb->addWidget(Termtv,0,Wt::AlignJustify);

Termsim = new WStandardItemModel(7,7);
Termsim->setHeaderData(0,WString("Name"));
Termsim->setHeaderData(1,WString("QNet"));
//Termsim->setHeaderData(2,WString("Line"));
//Termsim->setHeaderData(3,WString("Device"));
//Termsim->setHeaderData(4,WString("Location"));
//Termsim->setHeaderData(5,WString("Dept"));
//Termsim->setHeaderData(6,WString("Comment"));

Termtv->setModel(Termsim);

Termsim->clear();
#if 1 // Happens with and without this dialog prompt
/*
throw up a prompt before calling code that crashes.
*/
{
WDialog *dp;
WPushButton *bp;
WVBoxLayout *vb;
if((dp = new WDialog("Oops"))) {
vb = new WVBoxLayout();
dp->contents()->setLayout(vb);

vb->addWidget(new WText("Continue?"),1,Wt::AlignJustify);


bp = new WPushButton("Ok");
vb->addWidget(bp);
bp->clicked().connect(dp,&Wt::WDialog::accept);
dp->exec();
delete dp;
}
}
#endif
// We get a Segmentation fault on the next line.
Termsim->setHeaderData(0,WString("Name"));
}


WtWebApplication::~WtWebApplication()
{
}


WApplication *createApplication(const WEnvironment& env)
{
/*
* You could read information from the environment to decide whether
* the user has permission to start a new application
*/
return new WtWebApplication(env);
}




int main(int argc, char **argv)
{
return WRun(argc, argv, &createApplication);
}

    (1-1/1)