Виджеты док-станции Qt Designer доступны для детей

Я создал форму с помощью Qt Designer, в котором есть несколько док-виджетов, у этих док-виджетов есть несколько дочерних виджетов. Как я могу получить доступ к док-виджету и этим дочерним виджетам в моем mainwindow.cpp?


person Wazery    schedule 08.02.2012    source источник


Ответы (2)


Я настоятельно рекомендую прочитать документацию по таким вещам, но чтобы дать вам небольшое преимущество, QDockWidget наследуется от QWidget, который наследуется от QObject:

https://doc.qt.io/qt-4.8/qobject.html#children

widget->children() просто сообщит вам о дочерних элементах этого виджета. Это было бы необходимо, если бы вы еще не знали имена объектов, к которым нужно обращаться напрямую, или не имели к ним никакого отношения.

Обновить

Когда вы создаете объекты в Qt Designer и запускаете сгенерированный для вас setupUi(this) внутри вашего MainWindow, вы получаете доступ ко всем виджетам, которые вы установили как элементы. Вы можете обращаться к ним напрямую, как они были названы в Qt Designer. Пожалуйста, ознакомьтесь с одним из многочисленных руководств по началу работы с Qt. Вот один, который показывает вам, как использовать ваш файл пользовательского интерфейса и получать доступ к его членам: http://sector.ynet.sk/qt4-tutorial/my-first-qt-gui-application.html

person jdi    schedule 08.02.2012
comment
Я спрашиваю о том, как получить доступ к самому docwidget, а затем получить доступ к его дочерним элементам. - person Wazery; 09.02.2012
comment
@Menopia - я думаю, что несправедливо, что вы проголосовали за меня из-за того, что вы не читали документы или даже какую-либо информацию начального уровня о qt. - person jdi; 09.02.2012
comment
истинный. Он не давал тебе никакой ерунды, как это обычно делают люди. Он дал вам короткий ответ и много хорошо написанной документации. - person chikuba; 09.02.2012
comment
@xdsy - Нет проблем. Вы также можете принять ответ, если считаете его полезным - person jdi; 24.02.2012

Вы также можете получить список всех док-виджетов из главного окна с помощью

QList<QDockWidget *> dockWidgets = findChildren<QDockWidget *>();

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

person Martin Beckett    schedule 13.04.2012