[Interest] type casting 5 levels down no error but not proper
Sujan Dasmahapatra
sdh at lmwindpower.com
Tue Apr 24 14:42:57 CEST 2012
Thanks Diego and Konstantin for your valuable inputs. I am now doing
qobject_cast for all of them, please check the code snippet below, now
it's crashing at tabWid step. It's giving QASSERT failure. The failure
is happening in the following file
//qscopedpointer.h at the following line QASSERT(d)
inline T *operator->() const
{
Q_ASSERT(d); //this line it's crashing.
return d;
}
[code]
QWidget *wid = qobject_cast<QWidget *>(parent());
CSheet *sheet = qobject _cast<CSheet *>(wid->parent());
QScrollBar *scrollBar = qobject _cast<QScrollBar *>(sheet->parent());
CTabWidget *tabWid = qobject _cast<CTabWidget *>(scrollBar->parent());
// Here it is crashing, QSSERT(d) failure
CDataPage *dataPage = qobject _cast<CDataPage *>(tabWid->parent());
MainWindow *mainwin = qobject _cast<MainWindow *>(dataPage->parent());
mainwin->statusBar()->showMessage(tr("A new plot being added!!"),5000);
[/code]
CTabWidget is a custom class derived from QTabWidget.
Please help me getting the mainwindow handle. Thanks for your reply.
From: Diego Iastrubni [mailto:diegoiast at gmail.com]
Sent: Tuesday, April 24, 2012 5:41 PM
To: Sujan Dasmahapatra
Cc: interest at qt-project.org
Subject: Re: [Interest] type casting 5 levels down no error but not
proper
On Tue, Apr 24, 2012 at 2:58 PM, Sujan Dasmahapatra
<sdh at lmwindpower.com> wrote:
please check the code snippet below:
[code]
QWidget *wid = reinterpret_cast<QWidget *>(parent());
CSheet *sheet = reinterpret_cast<CSheet *>(wid->parent());
QScrollBar *scrollBar = reinterpret_cast<QScrollBar *>(sheet->parent());
CTabWidget *tabWid = reinterpret_cast<CTabWidget
*>(scrollBar->parent());
CDataPage *dataPage = reinterpret_cast<CDataPage *>(tabWid->parent());
MainWindow *mainwin = reinterpret_cast<MainWindow
*>(dataPage->parent());
mainwin->statusBar()->showMessage(tr("A new plot being added!!"),5000);
//[I][SIZE=7]Here it is crashing[/SIZE][/I]
[/code]
You meant
[code]
MainWindow *mainwin = dynamic_cast<MainWindow>(dataPage->parent());
if (mainwin!=NULL) {
// do your thing
}
[/code]
Or use qobject_cast as recommended. This will be faster then
dynamic_cast.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20120424/146a4358/attachment.html>
More information about the Interest
mailing list