3

これが状況です。必要に応じて、いくつかの便利な関数、カスタム ウィジェットを追加する QListView から派生したクラスがあります。ウィジェットを使用するためにデザイナーと格闘したくありません。Designer でプレーンな QlistView を (プレースホルダーとして) 使用し、pyuic4 でコンパイルしたいだけです。実行時に、通常の QListView を独自のバージョンに置き換えたいと考えています。

どうすればこれを行うことができますか?

私は、初期化で次のようなことがうまくいくことを望んでいました:

self.lstView1 = MyListView

しかし、そうではありません...

4

2 に答える 2

3

問題は、実際には lstView1 が指すオブジェクトを単に置き換えているだけで、ウィジェットに追加していないことです。つまり、オブジェクトを作成するときに、lstView1 を使用して新しいオブジェクトを指すように Python に指示するだけですが、実際の UI は既に追加されているため、古いポインターを使用しています。

py4uci を使用して ui ファイルを python に変換し、gui を次のように設定したと仮定します。

class ExambleUI(QtGUi.QDialog, UI_Example):
   def __init__(self, parent):
       QtGui.QDiialog.__init__(self, parent)
       self.setupUI(self)
       self.lstView1 = MyListView

lstView の値を変更する前に setupUi が実行されているため、新しいウィジェットを取得していません。行を交換するだけです:

class ExambleUI(QtGUi.QDialog, UI_Example):
   def __init__(self, parent):
       QtGui.QDiialog.__init__(self, parent)
       self.lstView1 = MyListView
       self.setupUI(self)

一方、このチュートリアルに従って、デザイナーでウィジェットを作成して使用することをお勧めします。簡単で高速です。

于 2009-09-11T12:26:21.267 に答える