Qt / C ++: идентификация родительского виджета в обработчике событий (сигнал) - PullRequest
1 голос
/ 10 марта 2012

Я создаю приложение Qt. В обработчике событий я хочу получить доступ к виджету, который вызвал событие.

Вы можете сделать это в методе фильтра событий, приведя параметр QObject:

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    MyWidget* widget= static_cast<MyWidget*>(obj);
    ...
}

Но как я могу сделать это внутри метода сигнала? Например, сигнал щелчка при просмотре списка:

void MainWindow::listView_Click(QModelIndex index)
{
     QListView* view = // ????
}

Спасибо

Ответы [ 2 ]

4 голосов
/ 10 марта 2012

Попробуйте QObject :: sender () .

void MainWindow::listView_Click(QModelIndex index)
{
    QListView* view = qobject_cast<QListView* >(sender());
}
4 голосов
/ 10 марта 2012

Объект, отправивший сигнал, доступен с помощью метода sender QObject, когда вы находитесь внутри слота.

...