2

ウィジェット (QTabeleWidget、QLabels、およびいくつかの QButton) があります。これは Qt-Designer で作成されたもので、いくつか実装する必要があります。そのためには、mousePressEvent が必要です。通常、私はサブクラスを書き、次のように書きます。

def mousePressEvent(self, event):
    if event.button() == Qt.LeftButton:
        print "left"
    else:
        print 'right'

しかし、デザイナーで作成されたウィジェットに対してそれを行う方法がわかりません。QTabeleWidget に必要です。誰かが私を助けてくれることを願っています。Google の助けを借りて問題を解決しようとしましたが、成功しませんでした。このサイトには何度もお世話になったので、試してみようと思い質問しました。

4

1 に答える 1

4

PyQt では、デザイナーで作成されたフォームを操作する 3 つの方法があります。

  1. 単一継承を使用し、フォームをメンバー変数にします
  2. 多重継承を使用する
  3. UI ファイルから直接メンバーを動的に生成する

単一継承:

class MyTableWidget(QTableWidget):
    def __init__(self, parent, *args):
        super(MyTableWidget, self).__init__(parent, args)
        self.ui = YourFormName()
        self.ui.setupUi(self)
        # all gui elements are now accessed through self.ui
    def mousePressEvent(self, event):
        pass # do something useful

多重継承:

class MyTableWidget(QTableWidget, YourFormName):
    def __init__(self, parent, *args):
        super(MyTableWidget, self).__init__(parent, args)
        self.setupUi(self)
        # self now has all members you defined in the form
    def mousePressEvent(self, event):
        pass # do something useful

動的に生成:

from PyQt4 import uic
yourFormTypeInstance = uic.loadUi('/path/to/your/file.ui')

上記の (3) の場合、フォームに指定したベース タイプのインスタンスが作成されます。その後、必要に応じてオーバーライドできますmousePressEvent

PyQt4 リファレンス マニュアルのセクション 13.1をご覧になることをお勧めします。セクション 13.2 でモジュールについて説明しています。uic

于 2010-08-21T22:30:05.243 に答える