0

私が必要とするのは QtMessageBox.information メソッドに非常によく似たものですが、カスタムウィンドウから必要です。

QtTreeViewWidget が 1 つ、QButtonGroup が 1 つ、ラベルの少ない 1 つのウィンドウが必要です。このウィンドウはメイン ウィンドウから呼び出されます。呼び出されたウィンドウを SelectionWindow として実装するクラスを呼び出す場合、必要なものは次のとおりです。

class MainWindow(QtGui.QMainWindow):
    ...
    def method2(self):
        selWin = SelectionWindow()
        tempSelectionValue = selWin.getSelection()
        # Blocked until return from getSelection
        self.method1(tempSelectionValue)
        ...

class SelectionWindow(QtGui.QMainWindow):
    ...
    def getSelection(self):
        ...
        return selectedRow
    ...

SelectionWindow のメソッド getSelection は選択ウィンドウをポップアップし、最後に QTreeViewWidget で選択された行を返します。ユーザーが選択ウィンドウで1行を選択してボタンで確認するまで、メインウィンドウがブロックされたままになるようにします。私が何を必要としているのか、あなたが理解してくれることを願っています。

どんな助けにも感謝します!

ありがとう、ティホ

4

1 に答える 1

0

私はこのようなことをします:

  • ボタンボックスを含むダイアログ ウィンドウ -> ダイアログ自体の accept() および reject() スロットに接続されたイベント
  • ダイアログモダリティをアプリケーションモーダルのようなものに設定します
  • ダイアログの exec_() メソッドを呼び出して、ユーザーが [OK]/[キャンセル] を選択するまでブロックし続ける
  • exec_() メソッドの実行が終了すると、ダイアログ ウィジェットから必要なものを読み取ることができます。

このようなものがあなたのニーズに合うはずです:

class SelectionWindow(QtGui.QMainWindow):
    ...
    def getSelection(self):
        result = self.exec_()
        if result:
            # User clicked Ok - read currentRow
            selectedRow = self.ui.myQtTreeViewWidget.currentIndex()
        else:
            # User clicked Cancel
            selectedRow = None
        return selectedRow
    ...
于 2010-03-02T11:16:48.180 に答える