转换为python后,是否可以从QT Designer访问自定义属性?

时间:2010-02-23 20:00:10

标签: properties pyqt qt-designer

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

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

谢谢,

埃里克

3 个答案:

答案 0 :(得分:2)

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

获取它
mywidget.property("myproperty")

这在pyqt 4.8.3中运行良好,也许它在以前的版本中不起作用。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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

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