1

私はPythonとQtの初心者です...

最初に使用しているデータのリストを表示するGUIプログラムに取り組んでいますQTableWidget

setItem()行は、メソッドを使用してテーブルに挿入されます。それらはQTableWidgetItemオブジェクトです。

ここで、ユーザーが特定の行(QTableWidgetItem)をクリックして選択できるようにしたいのですが、プログラムはセカンダリにデータを入力しQTableWidgetます。

シグナルとスロットというものがあることを学びました。私はそれを使うつもりですか?の使用例もありますがinstallEventFilter()、は適切ではありませんQTableWidgetItem

4

2 に答える 2

8

このための最も簡単な方法は、itemClickedQTableWidgetの-signalを使用することです。

def handle_item_clicked(tableItem):
    #the callback, called when an item is clicked, with the item as an argument
    #populate the secondary table in some way

#register the callback with the QTableWidget
yourTableWidget.itemClicked.connect(handle_item_clicked)

currentItemChanged現在および以前の選択を提供するシグナルを使用することもできます(たとえば、ユーザーがアイテムの選択を解除した場合にセカンダリウィジェットをクリアまたは非表示にできます。この場合、現在のアイテムはNoneになります)。

于 2012-06-18T12:31:34.187 に答える
1

Qtには「イベントリスナー」がありません。あなたが言ったように、あなたは信号をスロットに接続することによってそのようなことをします。

例えば:

QObject.connect(myTableWidget, QtCore.SIGNAL("clicked()"), self.foobar)

これにより、self.foobar()をクリックしたときにメソッドが呼び出されますmyTableWidget。foob​​ar関数は、選択されているアイテムを取得し、それに基づいて2番目のウィジェットにデータを入力できます。

の最後の引数ではconnect、かっこ(foobar())を使用せず、メソッド名のみを使用することに注意してください。

于 2012-06-18T11:32:13.697 に答える