QTreeView を含む pyqt を使用して qt デザイナーによって設計されたアプリケーションの最小限の例を取得しようとしています。
1) この方法でアプリを起動できますが、ボタンを押すと、TreeView ウィジェットにエントリが表示されず、エラー メッセージも表示されず、レイアウトも正常に見えます。何らかの更新方法はありますか?
私はまだqtの初心者であり、ドキュメントの多くはc ++の例で書かれており、基本的なcとpythonの経験しかありません。
from PyQt4 import uic, QtGui, QtCore
(Ui_MainWindow, QMainWindow) = uic.loadUiType('main_window.ui')
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.model = QtGui.QStandardItemModel()
self.connect(self.ui.pushButton_NeuesMoebel, QtCore.SIGNAL('clicked()'), self.add_item)
def add_item(self):
t = self.ui.lineEdit_Moebel.text()
if len(t) > 0:
item = QtGui.QStandardItem(t)
self.model.appendRow(item)
self.ui.lineEdit_Moebel.clear()
else:
self.ui.statusBar.showMessage('error: no text in Moebel')
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
2) さらに、これより *.ui ファイルを直接使用して、そのファイルの MainWindow を直接サブクラス化するよりクリーンな方法はありますか? UI は少し乱雑に見えます
3) たとえば、*.ui ファイルによって作成されたウィンドウのサブクラスに add_item メソッドを含めたほうがよいでしょう。*.ui ファイルを *.py ファイルに変換する中間ステップを使用する必要がありますか?