【问题标题】:How to install a custom widget in Qt?如何在 Qt 中安装自定义小部件?
【发布时间】:2011-11-16 21:07:30
【问题描述】:

我已扩展 QListView 以覆盖其鼠标事件,并且我希望将该扩展作为 Qt Creator 可视化设计小部件框上的小部件提供。

我正在关注构建自定义小部件的模拟时钟示例。我设法构建它没有错误。但是我该如何安装呢?是否添加构建步骤并将“安装”附加到 make 命令?

Qt 文档只是提到,哦,您可以只安装它或进行安装,而没有明确解释如何安装自定义小部件。如何在项目构建中进行“make install”

在 .NET 中,即 Visual Studio 窗口窗体中,我所要做的就是将小部件包含在我的项目中。

我必须手动将 .so 或 .dll 文件复制到特定目录吗?

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

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

【问题讨论】:

    标签: c++ qt qt4


    【解决方案1】:

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

    【讨论】:

    • 是的,在大多数情况下就足够了。
    • +1 非常简单的解决方法(在我花了几个小时尝试制作自定义插件但最终以失败告终)。这仍然不会让自定义小部件出现在“小部件窗格”(在 Qt Designer 上可视化可用小部件的窗格)上,但是一旦自定义小部件被提升,它们似乎在未来可以推广。
    • 这样做不是一个好主意。因为在 Qt 表单设计器上看不到自定义小部件的属性。最好的方法是使用“插件”。
    【解决方案2】:

    要使用小部件,您只需要将其模块包含到项目中。 要在设计器中查看小部件,您需要为 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 设计器,让它看到这个变量。

    我记得在非 windows 机器上 qt 设计器有一个奇怪的行为:它不查看 QT_PLUGIN_PATH,而是使用 $QT_PLUGIN_PATH/designer,而在 windows 上它查看 $QT_PLUGIN_PATH。

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多