[Qt-interest] Adding widget to QGraphicsView
John McClurkin
jwm at nei.nih.gov
Wed Jul 22 18:28:40 CEST 2009
Yuvaraj R wrote:
>
> I declared the the Qlabel ,QlineEdit as private in Class..
Do you mean that your class has private members named
QLabel *label;
QLineEdit *line:
?
>
> if use the label apart from the constrcutor application crashing..
Is the sample code below your constructor? If so, this may be the
problem. Your statements
Qlabel *label = new QLabel();
and
QLineEdit *line = new QLineEdit();
create local pointer variables in the constructor. These statements will
not initialize private member variables.
>
> *sample code.*
> ui->setupUi(this);
>
> this->setWindowFlags(Qt::WindowSystemMenuHint);
>
> QGraphicsScene *scene= new QGraphicsScene();
>
> QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget;
>
> QLabel *label = new QLabel();
>
> label->setText("Username");
>
> QFont font;
>
> font.setPointSize(9);
>
> label->setFont(font);
>
> proxy = scene->addWidget(label);
>
> proxy->setPos(50,130);
>
> QLineEdit *line = new QLineEdit();
>
> proxy = scene->addWidget(line);
>
> proxy->setPos(120,130);
>
> proxy->setMaximumWidth(120);
>
> ui->graphicsView->setScene(scene);
>
> QLabel *label1 = new QLabel();
>
> label1->setText("PassWord");
>
> label1->setFont(font);
>
> proxy = scene->addWidget(label1);
>
> proxy->setPos(50,170);
>
> QLineEdit *line1 = new QLineEdit();
>
> proxy = scene->addWidget(line1);
>
> proxy->setPos(120,170);
>
> proxy->setMaximumWidth(120);
>
> QPushButton *button = new QPushButton();
>
> button->setText("Login");
>
> button->setMaximumWidth(60);
>
> proxy = scene->addWidget(button);
>
> proxy->setPos( 150, 220);
>
> QLabel *label3 = new QLabel();
>
> label3->setText("Welcome to MaxxTel");
>
> font.Bold;
>
> font.setPointSize(13);
>
> label3->setFont(font);
>
> proxy = scene->addWidget(label3);
>
> proxy->setPos(100,50);
>
> ui->graphicsView->setScene(scene);
>
> QObject::connect(button,SIGNAL(clicked()),this,SLOT(show_message1()));
>
> }
>
> Widget::~Widget()
>
> {
>
> delete ui;
>
> }
>
> void Widget::show_message1()
>
> {
>
> QMessageBox::information(0,"",QString("yuvaraj"));
>
> label->hide();
>
> label1->hide();
>
> QMessageBox::information(0,"2",QString("yuvaraj"));
>
> label3->hide();
>
> line->hide();
>
> line1->hide();
>
> button->hide();
>
> QMovie *movie = new QMovie("../Icons/loader.gif");
>
> QLabel *label4 = new QLabel;
>
> label4->setMovie(movie);
>
> QMessageBox::information(0,"3",QString("yuvaraj"));
>
> movie->start();
>
> QMessageBox::information(0,"1",QString("yuvaraj"));
>
> label4->setGeometry(50,50,200,200);
>
> proxy = scene->addWidget(label4);
>
> ui->graphicsView->setScene(scene);
>
> QMessageBox::information(0,"5",QString("yuvaraj"));
>
> }
>
> i used to put current class as parent of label ,but align ment was not
> proper and when i am clicking the button..nothing happened..
>
>
> Thanks
>
> Yuvaraj R
>
> On Wed, Jul 22, 2009 at 7:53 PM, Srdjan Todorovic
> <todorovic.s at googlemail.com <mailto:todorovic.s at googlemail.com>> wrote:
>
> Hi,
>
> On 22/07/2009, John McClurkin <jwm at nei.nih.gov
> <mailto:jwm at nei.nih.gov>> wrote:
> > The compiler went to Qlineedit.h 268? I assume you mean that the
> > debugger went to qlineedit.h 268. If this is a stack trace, then this
> > line just the last entry of the trace. Since this is a Qt src file, I
> > double strongly that the error is here.
>
> The error is probably not there, but that's where it's manifested.
>
> eg.
>
> char buf[4];
> QWidget yay;
>
> ::memset(&buff, 0, 60);
>
> yay.show(); // bang!
>
> The debugger will probably catch yay's members as the cause of the
> crash (eg you set an internal pointer to NULL or some other invalid
> value).
> But it was actually the size param to memset() that is the error..
> (I'm sure you all know this ;) )
>
> > The error was triggered by your
> > code. You need to examine the stack trace to find the entries that
> > identify your code. That said, I would guess that, since the debugger
> > stops in qlineedit.h, you are using an invalid pointer to a QLineEdit
> > widget.
>
> Let me also add "use the debugger and get a stack trace".
>
> All you need to do is:
> gdb ./myprogram
> run
> bt
>
> So simple, yet so important.
>
> Good luck,
> Srdjan
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com>
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
>
More information about the Qt-interest-old
mailing list