У меня есть класс/QDialog (назовем его «Frame»), который содержит другие классы. Это то, что он выглядит следующим образом:Доступ к методам из другого класса внутри QWidget
В приведенном выше скриншоте, все внутри зеленого прямоугольника фактически отдельный класс/пользовательские QWidget (назовем его «Page3», поскольку он является третьим пунктом в списке), помещенный внутри QStackedWidget, в то время как все, что находится за пределами прямоугольника, является частью Frame. Таким образом, все внутри прямоугольника отделено от рамки, хотя оно, как представляется, является частью одной и той же формы. Нажатие на Обзор и Объекты SQLite вызывает загрузку отдельной страницы внутри QStackedWidget. Все эти классы должны иметь возможность общаться друг с другом.
Проблема в том, что я не уверен, как получить доступ к общедоступным методам или переменным Frame изнутри. См., Одна из функций Page3 заключается в том, чтобы разблокировать кнопку ОК в кадре, когда содержимое двух полей пароля (Пароль & Повторите). Для этого нужно вызвать метод, который разблокирует кнопки в кадре. Мне нужно связаться с текущим экземпляром Frame вместо создания новой копии, поэтому создание экземпляра Frame изнутри Page3 не работает. Я не могу использовать parent() либо потому, что просто ссылается на QStackedWidget внутри Frame вместо самого кадра.
Буду признателен, если кто-нибудь скажет мне, как это сделать.
Звучит так, как будто это может сработать. Есть ли способ отправить сигналы между классами? Я спрашиваю, потому что мне никогда не приходилось это делать раньше. –
Взгляните на документацию Qt: http://qt-project.org/doc/qt-4.8/signalsandslots.html Вы объявляете сигнал в разделе «сигналы» вашего объявления класса, а слот в «слотах» " раздел; затем определите метод слота, как и обычный метод класса. Затем вы подключите их где-нибудь, используя метод 'QObject :: connect', например:' connect (page3, SIGNAL (inputValid()), это, SLOT (unlockOk())); ' –
Ваше решение отлично работает. Благодаря! –