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
smime.p7s
Description: S/MIME Kryptografische Unterschrift
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest