PDA

View Full Version : Get a segfault when I setText() a label



AGStumps8807
7th October 2010, 21:39
So whenever I call the UpdateLabel function, I get a segmentation fault on the setText() line:

My Header File:

// MainWin.h
#ifndef _MAINWIN_H
#define _MAINWIN_H
#include <QtGui>
class StampCanv;
class MainWin : public QMainWindow
{
Q_OBJECT
public:
MainWin(int argc, char * argv[]);
~MainWin();
void UpdateLabel(int x, int y);
QLabel *label;
//private slots:
// void startGame();
// void exitGame();
// void updatePlayField();

private:
StampCanv *canv;
QWidget *centralWidget;
QListWidget *listWidget;
QWidget *verticalLayoutWidget;
QVBoxLayout *verticalLayout;
QRadioButton *CircleRadio;
QRadioButton *SquareRadio;
QRadioButton *TriangleRadio;
QWidget *verticalLayoutWidget_2;
QVBoxLayout *verticalLayout_2;
QRadioButton *RedRadio;
QRadioButton *GreenRadio;
QRadioButton *BlueRadio;

QMenuBar *menuBar;
QMenu *menuFile;
QMenu *menuShape;
QMenu *menuHelp;
//QToolBar *mainToolBar;
QAction *actionNew;
QAction *actionOpen;
QAction *actionSave;
QAction *actionExit;
QAction *actionCircle;
QAction *actionSquare;
QAction *actionTriangle;
QAction *actionAbout;
//QStatusBar *statusBar;
};
#endif

And The cpp file, The function is on the bottom:


//MainWin.cpp
#include "MainWin.h"
#include "StampCanv.h"
#include <QtGui>
#include <iostream>
using namespace std;
MainWin::MainWin(int argc, char * argv[])
{
setObjectName(QString::fromUtf8("MainWin"));
resize(612, 547);
setMouseTracking(true);


centralWidget = new QWidget;
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
centralWidget->setMouseTracking(true);
QVBoxLayout * mainLayout = new QVBoxLayout;
canv = new StampCanv;
canv->setMouseTracking(true);
canv->setObjectName(QString::fromUtf8("listWidget"));
canv->setGeometry(QRect(10, 10, 400, 400));
canv->setMinimumSize(QSize(400, 400));
canv->setMaximumSize(QSize(400, 400));
mainLayout -> addWidget(canv);
centralWidget -> setLayout(mainLayout);

verticalLayoutWidget = new QWidget(centralWidget);
verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget"));
verticalLayoutWidget->setGeometry(QRect(430, 140, 160, 71));
verticalLayout = new QVBoxLayout(verticalLayoutWidget);
verticalLayout->setSpacing(6);
verticalLayout->setContentsMargins(11, 11, 11, 11);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setContentsMargins(0, 0, 0, 0);

CircleRadio = new QRadioButton(verticalLayoutWidget);
CircleRadio->setObjectName(QString::fromUtf8("CircleRadio"));
CircleRadio->setChecked(true);

verticalLayout->addWidget(CircleRadio);

SquareRadio = new QRadioButton(verticalLayoutWidget);
SquareRadio->setObjectName(QString::fromUtf8("SquareRadio"));

verticalLayout->addWidget(SquareRadio);

TriangleRadio = new QRadioButton(verticalLayoutWidget);
TriangleRadio->setObjectName(QString::fromUtf8("TriangleRadio"));

verticalLayout->addWidget(TriangleRadio);

verticalLayoutWidget_2 = new QWidget(centralWidget);
verticalLayoutWidget_2->setObjectName(QString::fromUtf8("verticalLayoutWidget_2"));
verticalLayoutWidget_2->setGeometry(QRect(430, 230, 160, 65));
verticalLayout_2 = new QVBoxLayout(verticalLayoutWidget_2);
verticalLayout_2->setSpacing(6);
verticalLayout_2->setContentsMargins(11, 11, 11, 11);
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
verticalLayout_2->setContentsMargins(0, 0, 0, 0);
RedRadio = new QRadioButton(verticalLayoutWidget_2);
RedRadio->setObjectName(QString::fromUtf8("RedRadio"));
RedRadio->setChecked(true);

verticalLayout_2->addWidget(RedRadio);

GreenRadio = new QRadioButton(verticalLayoutWidget_2);
GreenRadio->setObjectName(QString::fromUtf8("GreenRadio"));

verticalLayout_2->addWidget(GreenRadio);

BlueRadio = new QRadioButton(verticalLayoutWidget_2);
BlueRadio->setObjectName(QString::fromUtf8("BlueRadio"));

verticalLayout_2->addWidget(BlueRadio);

label = new QLabel(this);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(430, 120, 60, 13));
label->setMouseTracking(false);
setCentralWidget(centralWidget);
menuBar = new QMenuBar;
menuBar->setObjectName(QString::fromUtf8("menuBar"));
menuBar->setGeometry(QRect(0, 0, 612, 21));
menuBar->setMouseTracking(false);
menuFile = new QMenu;
menuFile->setObjectName(QString::fromUtf8("menuFile"));
menuFile->setMouseTracking(false);
menuShape = new QMenu;
menuShape->setObjectName(QString::fromUtf8("menuShape"));
menuHelp = new QMenu;
menuHelp->setObjectName(QString::fromUtf8("menuHelp"));
menuBar->addMenu(menuFile);
menuBar->addMenu(menuShape);
menuBar->addMenu(menuHelp);


/*mainToolBar = new QToolBar;
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
mainToolBar->setMouseTracking(false);
addToolBar(Qt::TopToolBarArea, mainToolBar);*/

actionNew = new QAction(menuFile);
actionNew->setText("New");
actionOpen = new QAction(menuFile);
actionOpen->setText("Open");
actionSave = new QAction(menuFile);
actionSave->setText("Save");
actionExit = new QAction(menuFile);
actionExit->setText("Exit");
actionCircle = new QAction(menuShape);
actionCircle->setText("Circle");
actionCircle->setCheckable(true);
actionCircle->setChecked(true);
actionCircle->setIconVisibleInMenu(true);
actionSquare = new QAction(menuShape);
actionSquare->setText("Square");
actionSquare->setCheckable(true);
actionTriangle = new QAction(menuShape);
actionTriangle->setText("Triangle");
actionTriangle->setCheckable(true);
actionAbout = new QAction(menuHelp);
actionAbout->setText("About");


menuBar->addAction(menuFile->menuAction());
menuBar->addAction(menuShape->menuAction());
menuBar->addAction(menuHelp->menuAction());
menuFile->addAction(actionNew);
menuFile->addAction(actionOpen);
menuFile->addAction(actionSave);
menuFile->addAction(actionExit);
menuShape->addAction(actionCircle);
menuShape->addAction(actionSquare);
menuShape->addAction(actionTriangle);
menuHelp->addAction(actionAbout);

setWindowTitle(QApplication::translate("MainWin", "IPA2", 0, QApplication::UnicodeUTF8));
CircleRadio->setText(QApplication::translate("MainWin", "Circle", 0, QApplication::UnicodeUTF8));
SquareRadio->setText(QApplication::translate("MainWin", "Square", 0, QApplication::UnicodeUTF8));
TriangleRadio->setText(QApplication::translate("MainWin", "Triangle", 0, QApplication::UnicodeUTF8));
RedRadio->setText(QApplication::translate("MainWin", "Red", 0, QApplication::UnicodeUTF8));
GreenRadio->setText(QApplication::translate("MainWin", "Green", 0, QApplication::UnicodeUTF8));
BlueRadio->setText(QApplication::translate("MainWin", "Blue", 0, QApplication::UnicodeUTF8));
label->setText("(x1, y1)");
menuFile->setTitle(QApplication::translate("MainWin", "File", 0, QApplication::UnicodeUTF8));
menuShape->setTitle(QApplication::translate("MainWin", "Shape", 0, QApplication::UnicodeUTF8));
menuHelp->setTitle(QApplication::translate("MainWin", "Help", 0, QApplication::UnicodeUTF8));
setMenuBar(menuBar);

}
MainWin::~MainWin()
{
}
void MainWin::UpdateLabel(int x, int y)
{
cout << "UPDATE" << endl;
cout << "X: " << x << endl;
cout << "Y: " << y << endl;
label->setText("(x2,y2)");
}

Obviously, I'll change what the update function will change it to later, but I can't even get it to finish the function call.

Lykurg
7th October 2010, 22:16
check if label is a valid pointer!