0

私は Maya2012 で Pyqt4 を使用して、UI に似たリファレンス エディタを作成しています。QtableWidget を使用して参照リストを作成しており、各セルにサブウィジェットがあります。ウィジェットの 1 つは、参照をアンロードまたは再ロードするチェックボックスです。私が抱えている問題は、セルを選択せず​​にチェックボックスを直接クリックしても何も起こらないことです

これは私のコードです:

 def listConnections(self):

    self.pos=self.sender().currentRow()

    wid = self.list.ref_l.cellWidget(self.pos, 0).children()

    self.text = self.list.list[self.pos]
    self.ref()

    for wt in wid:
        if type(wt)== type(QCheckBox()):
            wt.stateChanged.connect(self.changeState)

        if type(wt)== type(QComboBox()):
            wt.currentIndexChanged.connect(self.changeType)

サブウィジェットを検出できることを知っていた唯一の方法であるため、「itemSlectionChanged」シグナルで関数を呼び出しています。すべてのサブウィジェットは、リストを埋めた瞬間に作成されます。

私が欲しいものを作る方法はありますか?

編集:

これは私が関数を呼び出す方法です

self.list.ref_l.itemSelectionChanged.connect(self.listConnections)

これがセル内のすべてのサブウィジェットを作成する方法です

 def fillList(self):
    mayaRef = self.findRef()

    if len(mayaRef)>0:
        for count in range(0,len(mayaRef)):

            self.ref_l.insertRow(count)

            wid=QWidget()
            cLayout=QHBoxLayout()
            wid.setLayout(cLayout)

            checkWid=QCheckBox()

            nameWid=QLabel()

            cLayout.addWidget(nameWid)

            nameWid2=QLabel()

            cLayout.addWidget(nameWid2)

            comWid=QComboBox()
            cLayout.addWidget(comWid)

            self.ref_l.setCellWidget(count,0,wid)

self.ref_l は私の QTable ウィジェットです。これは、元の self.list で呼び出している別のコードにあります。

4

1 に答える 1

0

でチェック ボックスを作成した直後に、すべての接続を設定する必要がありますfillList。各項目は、参照のパスに関連付けられています。QSignalMapper を使用して各チェック ボックスをパスにマップし、シグナル マッパーをchangeStateスロットに接続します。次に、シグナル マッパーは、指定したパスでそのスロットを呼び出します。

于 2013-05-21T20:10:48.680 に答える