Am 24.04.2012 13:58, schrieb Sujan Dasmahapatra:
I have my mainwindow which is QMainWindow the parent of all my other
classes. I am type casting upwards from 5 levels down using
reinterpret_cast, to access the mainwindow to display message using
statusBar(), but when type casting it's not giving error but when
accessing mainwindow->statusBar() it's crashing.

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);
//Here it is crashing
[/code]

1. (as others mentioned) use dynamic_cast<>() and check the return value
2. take a look at QWidget::window (), probably this works:
  MainWindow *mainwin = dynamic_cast<MainWindow*>(window());
  if (mainwin)
  {
    mainwin->statusBar()->showMessage(...);
  }
3. re-think your design and maybe even your architecture, as a (very) low level widget in the hierarchy should not make assumptions like this about its parents. How would your piece of code be ever reusable?

Best Regards / Mit freundlichen Grüßen
Rainer Wiesenfarth

--
Tel.: +49 (0)711 22 88-10  *  Fax: +49 (0)711 22 88-111
Web: http://www.trimble.com/geospatial/  *  http://www.inpho.de/
Trimble Germany GmbH  *  Branch office Stuttgart
Rotebühlstraße 81  *  70178 Stuttgart  *  Germany
Commercial register: HRB 83893, Darmstadt
Managing Directors: Dr. Frank Heimberg, Hans-Jürgen Gebauer

Attachment: smime.p7s
Description: S/MIME Kryptografische Unterschrift

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to