#c #qt #user-interface #visual-c #layout
#c #qt #пользовательский интерфейс #visual-c #макет
Вопрос:
В любом случае, у нас могут быть пользовательские макеты, например, как определено вhttps://doc.qt.io/archives/qt-4.7/examples-layouts.html
внутри Qt Designer?
Каким будет процесс добавления таких пользовательских макетов в Qt Designer? Кто-нибудь может рассказать о шагах, связанных с таким пользовательским улучшением в Qt Designer.
Ответ №1:
Вы не можете создать пользовательский макет прямо внутри QtDesigner. Вместо этого вы можете написать свой макет в виде плагина для QtDesigner. После этого вы можете открыть QtDesigner и просто перенести свой собственный макет в форму, как любой другой виджет в коллекции Qt.
Смотрите этот вопрос, чтобы узнать, как написать свой собственный плагин для Qt. Это не так сложно.
Комментарии:
1. но разве плагины не предназначены для пользовательских виджетов?
2. Не стоит недооценивать ваш вопрос. Пожалуйста, уточните
3. Я имею в виду, когда мы создаем плагины для QtDesigner, разве это не для создания пользовательских виджетов с помощью QT Designer. Я не видел ни одного примера кода, в котором пользовательский макет добавлялся бы в QtDesigner. Мой вопрос в том, если это возможно, то какой процедуре я должен следовать, чтобы пользовательский макет был доступен в QT Designer.
4. Добавление пользовательского макета аналогично добавлению пользовательского виджета. Плагины предназначены не только для пользовательских виджетов (дочерних элементов QWidget). Вы можете наследовать от QLayout, создать свой собственный макет и плагин, как описано в примерах, даже если ваш виджет не является виджетом (не подкласс QWidget, как clock в примере)
5. QLayout не наследуется от QWidget, поэтому это НЕВОЗМОЖНО выполнить. Смотрите bugreports.qt-project.org/browse/QTBUG-3109 . Виртуальный метод createWidget из QDesignerCustomWidgetInterface возвращает указатель QWidget. Таким образом, просто невозможно заставить его возвращать QLayout.