Qt лучший способ вызвать методы QMainWindow из другого виджета - PullRequest
1 голос
/ 25 января 2012

У меня есть главное окно типа QMainWindow, затем я установил некоторый виджет и назначил этому виджету QMainWindow в качестве родителя в своем конструкторе, QMainWindow, переданный как Object. Теперь мне нужно из этого виджета вызвать метод из QMainWindow. какой будет лучший способ сделать это?

Вот так выглядит виджет:

DataListModel::DataListModel( QObject *parent ) :
             QStandardItemModel( 0, 0, parent ) 

{
// here I like to invoke some QMainWindow method? 
//can I cast somehow the parent ? or use some pointer ?

}

1 Ответ

6 голосов
/ 25 января 2012

Если MainWindow является родителем вашей DataListModel, вы можете его преобразовать:

MainWindow *w = qobject_cast<MainWindow*>(parent);
if(w == 0) {
 //error handling here
}

edit

Например, это:

#include "mainwindow.h"
#include <QStatusBar>
ScrollBar::ScrollBar(QWidget *parent) :
    QScrollBar(parent)
{
    MainWindow *w = qobject_cast<MainWindow*>(parent);

   if(w != 0) {
       qDebug() << Q_FUNC_INFO;
       QStatusBar *bar = w->statusBar();
       bar->hide();
   }
}

отлично работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...