Как обмениваться указателями виджетов с другими виджетами - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть своего рода приложение для видеопроигрывателя, написанное на QT, идея состоит в том, что я могу щелкнуть видеокадр, и приложение получит информацию о координатах и ​​цвете из этих точных пикселей, пока что приложение хорошо работает, так какПредполагается, но дело в том, что у меня есть панель управления, которая хочет иметь виджет списка, который я заполняю информацией из фрейма, для этого мне нужно иметь какую-то связь между этими двумя виджетами, и теперь я использую этотметод, чтобы найти mainWindow:

QWidget* mainwindow;
QWidgetList list = QApplication::topLevelWidgets();
for (int a = 0; a < list.size(); a++)
    if (list[a]->objectName() == "MainWindow")
    {
        mainwindow = list[a];
        break;
    }

с этим у меня есть доступ к виджету mainwindow, и главное окно будет служить мостом для получения доступа к указателям другого виджета, проблема, которую я вижу с этим подходомявляется то, что мне нужно иметь метод get для каждого виджета, к которому мне нужен доступ. Другой способ сделать это состоит в том, чтобы иметь метод set в виджете и использовать родительский виджет. Желание имеет доступ к двум виджетам, которые я ищу для установкиэто правильно, проблема с этим делает методы к этому в желании родительского виджета делаетЯ не имею ничего общего с этими двумя методами. Итак, что я спрашиваю, так это лучший или более чистый метод для этого?есть какой-нибудь QT-способ сделать это?Спасибо!

PS: Просто чтобы прояснить, я не говорю о СИГНАЛАХ и СЛОТАХ, моя идея - использовать тезисы, но сначала мне нужен указатель на виджет, который я ищу, чтобы затем подключиться кэто слоты!

1 Ответ

2 голосов
/ 28 сентября 2011

Вы пытаетесь сделать это в коде более низкого уровня, поэтому это неудобно. Ни один виджет не имеет контекста другого.

Просто создайте сигнал / слоты на двух виджетах, с которыми вы хотите общаться, а затем вызовите область вызова, подключив их после их создания.

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