我是PyQt和Qt Designer的新手,我正在尝试创建一个简单的方法,将qWidgets与SQLite数据库中的表和列相关联。我的想法是在设计器中使用两个自定义属性标记每个qWidget,一个具有表名,另一个具有列名。稍后,我将使用设计器提供的信息来构建我自己的类,该类在qwidets和SQLite数据库之间创建关系。
在Designer中添加自定义属性似乎工作正常,但是在将设计器的xml转换为python(使用UIC)时,不会生成这些自定义属性的代码。有人做过这个吗?也许有更好的方法来做到这一点?
谢谢,
埃里克
答案 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并自己进行查询以填充数据。 Here和here是关于Qt中数据库的文章。你可能会从其中一个中获得新设计的灵感。
答案 2 :(得分:0)
使用Designer工具我没有好运 - 通常我最终使用pyuic
进行一些粗略的布局,然后手动编辑和添加其他内容。
听起来您可以通过创建自己的自定义类来轻松完成任务,该类继承自QWidget
并具有您描述的其他属性。根据我在设计师中尝试使用自定义小部件的经验,我认为“更简单”的方法是自己编写类,然后手动设置布局。
我知道这并不能完全回答你的问题,但也许你会尝试我的一些建议。