【问题标题】:Is it possible to access custom properties from QT Designer after converting to python?转换为 python 后是否可以从 QT Designer 访问自定义属性?
【发布时间】:2011-01-20 05:54:14
【问题描述】:

我是 PyQt 和 Qt Designer 的新手,我正在尝试创建一种简单的方法来将 qWidgets 与 SQLite 数据库中的表和列相关联。我的想法是用两个自定义属性标记设计器中的每个 qWidget,一个带有表名,一个带有列名。之后,我会使用设计师提供的信息来构建我自己的类,从而在 qwidets 和 SQLite 数据库之间建立关系。

在 Designer 中添加自定义属性似乎工作正常,但是在将设计器的 xml 转换为 python(使用 UIC)时,不会生成这些自定义属性的代码。有没有人成功做到这一点?也许有更好的方法来做到这一点?

谢谢,

埃里克

【问题讨论】:

    标签: properties pyqt qt-designer


    【解决方案1】:

    如果您在 Designer 中添加了一个名为“myproperty”的属性,请使用...获取它

    mywidget.property("myproperty")
    

    这在 pyqt 4.8.3 中可以正常工作,也许它在以前的版本中不起作用。

    【讨论】:

      【解决方案2】:

      查看this article Eric。特别看一下标题为“制作插件”的部分。 River Bank Computing 还有一个很棒的PyQt reference

      编辑: 我一直在做更多的阅读,但我找不到自动为你完成这项工作的方法。如果您可以在运行时而不是设计时添加动态属性,您可以完成相同的最终结果。 Here是QObject中setProperty()方法的解释,QWidget继承自该方法。

      如果这对您不起作用,那么似乎您最好采用不那么通用的方法。您可以使用从 QSqlTableModel 派生的自定义类来跟踪您的连接信息,而不是使用通用 QWidget。另一种方法是只使用 QTableView 并自己进行查询以填充数据。 Herehere 是关于 Qt 数据库的文章。您可能会从其中一个人那里获得一些新设计的灵感。

      【讨论】:

      • 嗨瑞恩,感谢您的指点。似乎第一篇文章建议我需要创建一个自定义小部件才能添加属性。我理解正确吗?在 QT 设计器中,属性编辑器允许您在小部件上创建动态属性并为其赋值。这保存在 XML (.ui) 文件中,因此我假设 UIC 编译器会看到这些数据。转成python后不就可以使用了吗?
      • 我会试试看的。感谢您对此的帮助!
      【解决方案3】:

      我在使用 Designer 工具时运气不佳 - 通常我最终会使用pyuic 进行一些粗略的布局,然后手动编辑和添加其他内容。

      听起来您可以通过创建自己的自定义类来轻松完成任务,该类继承自 QWidget 并具有您描述的其他属性。根据我尝试在设计器中使用自定义小部件的经验,我认为“更简单”的方法是自己编写类,然后手动设置布局。

      我知道这并不能完全回答你的问题,但也许你会尝试我的一些建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 2011-12-30
        • 2019-05-03
        • 1970-01-01
        • 2018-10-04
        相关资源
        最近更新 更多