.NETの世界からPythonとPyQt4に移行しました。誰かがQtウィジェットにデータをバインドする機能をよく知っているのだろうかと疑問に思っていましたか?たとえば(データにsqlalchemyを使用):PyQt4:データバインディング?
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
このようなことは可能ですか?
.NETの世界からPythonとPyQt4に移行しました。誰かがQtウィジェットにデータをバインドする機能をよく知っているのだろうかと疑問に思っていましたか?たとえば(データにsqlalchemyを使用):PyQt4:データバインディング?
gems = session.query(Gem).all()
list = QListWidget()
list.datasource = gems
このようなことは可能ですか?
1つのオプションは、クエリからリスト(またはタプル)オブジェクトを返す関数を持ち、それを使用してQListWidgetを更新します。 QListWidgetにはQListStringが格納されていることに注意してください。あなたの更新機能は、次のようになります。
直接交換は、あなたはそれが役に立つQDataWidgetMapperクラスを見て見つけるかもしれないが、def updateQListWidget(qlistwidget, values):
""" Updates a QListWidget object with a list of values
ARGS:
qlistwidget - QListWidget object
values - list of values to add to list widget
"""
qlistwidget.clear()
qlist = QtCore.QStringList()
for v in values:
s = QtCore.QString(v)
qlist.append(s)
qlistwidget.addItems(qlist)
:あなたが読書の怖がっていない場合
http://pyqt.sourceforge.net/Docs/PyQt4/qdatawidgetmapper.html
C++のコードは、この例でも有用であることを証明するかもしれません:
https://doc.qt.io/qt-4.8/qt-sql-sqlwidgetmapper-example.html
注目をmapperはQtのModel/Viewフレームワーク内で動作します。この例では、モデルはたまたまSQLデータベースモデルです。