如何在Qt中安装自定义小部件

How to install a custom widget in Qt?

本文关键字:自定义 小部 安装 Qt      更新时间:2023-10-16

我已经扩展了QListView来覆盖它的鼠标事件,并且我希望使该扩展作为Qt Creator可视化设计小部件框中的小部件可用。

我遵循构建自定义小部件的模拟时钟示例。我成功地构建了它,没有出错。但是我怎么安装它呢?我是否添加构建步骤并将"install"附加到make命令?

Qt文档只是提到,比如,哦,你可以安装它或安装,没有清楚地解释如何安装自定义小部件。我如何做一个"make install"在项目构建

在。net中,也就是visual studio窗口窗体,我所要做的就是在我的项目中包含这个小部件。

我必须手动复制。so或。dll文件到一个特定的目录?

有人能给我一个简洁的离散清晰的解释我需要做什么来获得自定义小部件出现在我的Qt Creator小部件框?我不是在问如何编写代码和配置来创建自定义小部件。我已经有了一个自定义小部件。我只是想知道下一步该怎么做。

我正在使用Ubuntu,所以不要沉迷于解释为什么/如何在Windows上重新构建Creator。

有一个更简单的方法。只需在设计器中放置一个普通的QListView,右键单击,然后"提升到"。在这里,为您的扩展小部件输入一个类名。

要使用小部件,您只需要将其模块包含到项目中。要在设计器中查看widget,您需要为qt设计器编写插件。

我使用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 designer在非windows机器上有一个奇怪的行为:它不看QT_PLUGIN_PATH,而是使用$QT_PLUGIN_PATH/designer,而在windows上它看$QT_PLUGIN_PATH