Как установить собственный виджет в Qt? - PullRequest
2 голосов
/ 16 ноября 2011

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

Я следую примеру аналоговых часов создания собственного виджета. Мне удалось построить его без ошибок. Но как мне его установить? Добавить шаг сборки и добавить команду "install" в команду make?

В документах Qt просто упоминается, например, о, вы можете установить только его или сделать установку, без четкого объяснения, как установить пользовательский виджет. Как мне сделать "make install" внутри сборки проекта

В .NET, то есть в формах окон Visual Studio, все, что мне нужно было сделать, это включить виджет в свой проект.

Нужно ли вручную копировать файлы .so или .dll в определенный каталог?

Может ли кто-нибудь дать мне краткое и четкое объяснение того, что мне нужно сделать, чтобы пользовательский виджет появился в моем окне виджета Qt Creator? Я не спрашиваю о том, как написать код и конфигурацию для создания собственного виджета. У меня уже есть собственный виджет. Мне просто нужно знать, каким должен быть мой следующий шаг.

Я использую Ubuntu, так что не балуйтесь объяснением, почему / как пересобрать Creator на mingw для Windows.

Ответы [ 2 ]

5 голосов
/ 16 ноября 2011

Есть более легкий подход. Просто поместите нормальный QListView в конструктор, щелкните правой кнопкой мыши и «продвигайте». Там введите имя класса для вашего расширенного виджета.

0 голосов
/ 16 ноября 2011

Чтобы использовать виджет, вам нужно всего лишь включить его модуль в проект. Чтобы увидеть виджет в дизайнере, вам нужно написать плагин для qt designer.

Я использовал cmake и linux, но я полагаю, что это также похоже на другие настройки. В CMakeLists.txt у меня есть:

ADD_LIBRARY(widgets_plugin SHARED
  foo.cpp
)
SET_TARGET_PROPERTIES(widgets_plugin PROPERTIES COMPILE_FLAGS "${QT_DEFINITIONS} -DQDESIGNER_EXPORT_WIDGETS -DQT_PLUGIN -DQT_NO_DEBUG -DQT_SHARED")

TARGET_LINK_LIBRARIES(widgets_plugin ${QT_LIBRARIES})
IF (NOT WIN32)
  ADD_CUSTOM_COMMAND(TARGET widgets_plugin POST_BUILD
      COMMAND rm -fr ${CMAKE_CURRENT_BINARY_DIR}/designer
      COMMAND mkdir ${CMAKE_CURRENT_BINARY_DIR}/designer
      COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/libwidgets_plugin.so ${CMAKE_CURRENT_BINARY_DIR}/designer/
 )
ENDIF (NOT WIN32)

После этого вам нужно определить переменную окружения

 QT_PLUGIN_PATH="path/to/you/plugin"

и запустите qt designer таким образом, чтобы он увидел эту переменную.

Как я помню, странное поведение конструктора qt на машинах, отличных от Windows: он не смотрит на QT_PLUGIN_PATH, а использует $ QT_PLUGIN_PATH / designer, тогда как на окнах он смотрит на $ QT_PLUGIN_PATH.

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