【问题标题】:How to add new widgets plugins in QT-Designer如何在 QT-Designer 中添加新的小部件插件
【发布时间】:2020-10-25 11:17:43
【问题描述】:

我想在 qt 设计器中添加 QwebEngineView、QtCharts 和 Qwt Widgets。目前我正在使用来自 SitePackages\PyQt5_tools\Qt\bin\Qt Designer 的 QT Designer。

我看到了下面的帖子,但主要讨论的是使用 c++ 添加小部件。

How to insert QChartView in form with Qt Designer?

当我按照上面帖子中提到的步骤进行操作时,当我在 python 中推广小部件时,我无法找到 Qwebengineview 和 Qtcharts。请帮我解决这个问题。

【问题讨论】:

    标签: python pyqt qt-designer qwebengineview


    【解决方案1】:

    这是我在 Linux 中将 QChartView 和 QWebEngineView 插件添加到 pyqt5_tools 的过程。

    生成插件:

    就我而言,我使用以下程序:

    git clone -b 5.15.0 https://github.com/qt/qtcharts.git
    cd qtcharts/plugins/designer 
    qmake 
    make
    
    git clone -b 5.15.0 https://github.com/qt/qtwebengine.git
    cd qtwebengine/src/plugins/qwebengineview
    qmake 
    make
    

    在文件夹“qtcharts/plugins/designer”和“qtwebengine/plugins/designer”中生成了.so文件(在windows中应该生成.dll文件)。

    复制

    由于需要使用 QChartView 和 QWebEngineView,因此假设您已安装 pyqchart 和 pyqtwebengine(如果您没有安装,则运行:python -m pip install PyQtChart PyQtWebEngine)。

    在控制台执行pyqt5_tools的pyqt5designer时,得到如下日志:

    PYQTDESIGNERPATH: :
    PYTHONPATH: /home/qt_user/venv/bin:/usr/lib/python38.zip:/usr/lib/python3.8:/usr/lib/python3.8/lib-dynload:/home/qt_user/venv/lib/python3.8/site-packages::
    PATH: /home/qt_user/venv/bin:/usr/lib/python38.zip:/usr/lib/python3.8:/usr/lib/python3.8/lib-dynload:/home/qt_user/venv/lib/python3.8/site-packages:/home/qt_user/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
    QT_DEBUG_PLUGINS is not set
    QT_PLUGIN_PATH: :/home/qt_user/venv/lib/python3.8/site-packages/pyqt5_tools/Qt/plugins
    PYQT5TOOLS_TEST_PATH is not set
    LD_LIBRARY_PATH: ::/usr/lib
    

    这部分最重要的是QT_PLUGIN_PATH,为了概括这个过程,我将把PYQT5_TOOLS_QT称为/home/qt_user/venv/lib/python3.8/site-packages/pyqt5_tools/Qt

    您还必须使用以下命令从 PyQt5 获取 QT_PLUGIN_PATH:

    python -c "from PyQt5.QtCore import QLibraryInfo;  print('QT_PLUGIN_PATH=', QLibraryInfo.location(QLibraryInfo.PluginsPath))"
    

    输出:

    QT_PLUGIN_PATH= /home/qt_user/venv/lib/python3.8/site-packages/PyQt5/Qt/plugins
    

    所以我会打电话给 PYQT5_QT/home/qt_user/venv/lib/python3.8/site-packages/PyQt5/Qt

    因此,您应该使用该信息进行复制:

    PYQT5_QT/translations                     ---> PYQT5_TOOLS_QT/translations
    PYQT5_QT/lib/libQt5WebEngineWidgets.so.5  ---> PYQT5_TOOLS_QT/lib
    PYQT5_QT/lib/libQt5WebEngineCore.so.5     ---> PYQT5_TOOLS_QT/lib
    PYQT5_QT/lib/libQt5Positioning.so.5       ---> PYQT5_TOOLS_QT/lib
    PYQT5_QT/lib/libQt5WebChannel.so.5        ---> PYQT5_TOOLS_QT/lib
    PYQT5_QT/lib/libQt5QuickWidgets.so.5      ---> PYQT5_TOOLS_QT/lib
    PYQT5_QT/libexec                          ---> PYQT5_TOOLS_QT/libexec
    PYQT5_QT/resources                        ---> PYQT5_TOOLS_QT/resources
    

    还有插件:

    qtcharts/plugins/designer/libqtchartsdesigner.so  ---> PYQT5_TOOLS_QT/plugins/designer
    qtwebengine/plugins/designer/libqwebengineview.so ---> PYQT5_TOOLS_QT/plugins/designer
    

    如果插件对话框通过以下方式打开:帮助 --> 关于插件

    【讨论】: