0

Qtアプリケーション用の組み込みPythonプラグインのセットの保守を開始しました。私はPyQtとPythonの両方に慣れていないので、我慢してください。

「展開された」シグナルが対応するハンドラーによってキャッチされていない1つのダイアログにQTreeWidgetの実装があります。私はそれがうまく機能する別のダイアログを持っています。

問題ダイアログで、接続が成功したことを確認できます。

connected = wdg.connect(wdg.treeView_,SIGNAL("expanded(QTreeViewItem*)"), wdg.expanded)

Trueと評価されます。子インジケーターをクリックしてアイテムを展開すると、[+]記号がマイナスに変わりますが、それ以外は何も起こりません。同様に、[-]をクリックすると、[+]に戻ります。どちらの場合も、最初にインジケーターをSHOWに設定するようにChildIndicatorPolicyを設定しました。

OKで動作するダイアログで、ユーザーがプラス記号をクリックすると、「展開された」ハンドラーが実行されます。クリックするとインジケーターのみが切り替わります。

私のハンドラーコードは単純です:

def expanded(self, item):
    logging.debug("In expanded handler")

ロギング呼び出しにブレークポイントがありますが、ステートメントに到達しません。

失敗したダイアログです。上の信号の直前に接続されている別の信号があり、正常に機能します。

wdg.connect(wdg.treeView_,SIGNAL("currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)"), wdg.itemChanged)

拡大された信号が発火したり捕らえられたりするのを防ぐことができるものはありますか?おそらく別のイベント?何を探すべきですか?私の命名法は少しずれているかもしれないことを認識しており、その点でも修正を歓迎します。

4

2 に答える 2

3

QTreeView 展開イベントのシグナルは"expanded(QModelIndex)"です。

または、新しいスタイルのシグナル/スロット構文の使用を検討してください。特定のシグナルの正確な引数の型を調べるよりもはるかに簡単だと思います。

wdg.treeView_.expanded.connect(wdg.expanded)
于 2011-09-02T23:33:52.150 に答える
0

問題を見つけました。誤解を招くような名前にもかかわらず、オブジェクトはQTreeWidgeです。"expanded"信号の名前をからに置き換え、"itemExpanded"パラメータタイプをに変更するとQTreeWidgetItem*、すべてが機能しました。

wdg.connect(wdg.treeView_, SIGNAL("itemExpanded(QTreeWidgetItem*)"), wdg.expanded)
于 2011-09-03T22:09:12.210 に答える