PDA

View Full Version : Unable to get access to class scope QList element



bengone
29th December 2011, 11:35
I am having difficulty getting access to a QList element at class scope. Problem is only within paintEvent. What am I missing?


#include <QPainter>
#include <QList>
#include <QFrame>
#include <QRectF>

class Frame : public QFrame
{
private:
QList<QRectF> llist;

public:
Frame(QFrame *parent=0);

protected:
virtual void paintEvent(QPaintEvent *);
void tst();
};



void Frame::paintEvent(QPaintEvent *pe)
{
char m[20];
int size = 10;

// if this line is commented-out, no problem
size = llist.size(); // Crashes here
sprintf(m,"%d",size);

QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
//painter.drawText(rect(), Qt::AlignCenter, "Qt");
painter.drawText(rect(), Qt::AlignCenter, m);
//painter.drawRect(l.at(0));
}

stampede
29th December 2011, 11:51
Compile debug version and run with debugger, post the backtrace after crash.
Btw. if you want to display number, better use QString::number() method:


void Frame:aintEvent(QPaintEvent *pe)
{
// if this line is commented-out, no problem
int size = llist.size(); // Crashes here

QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
//painter.drawText(rect(), Qt::AlignCenter, "Qt");
painter.drawText(rect(), Qt::AlignCenter, QString::number(size));
//painter.drawRect(l.at(0));
}

bengone
29th December 2011, 12:27
It's always scary when you get it working, and you don't know why. Maybe running qmake again. Thanks for the advice on QString. I was only trying to get anything to display from the QList and was a test. Thanks again stampede. How do I mark solved?