Пользовательский макет в Qt Designer

#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.