PyQt4: Добавление функциональности QtMessageBox.information в пользовательское окно - PullRequest
0 голосов
/ 25 февраля 2010

мне нужен какой-то очень похожий метод QtMessageBox.information, но он мне нужен из моего собственного окна.

Мне нужно одно окно с несколькими метками, один QtTreeViewWidget, одна QButtonGroup ... Это окно будет вызываться из главного окна. Если мы вызываем класс, который реализует названное окно, как 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
    ...

Метод getSelection из SelectionWindow должен всплывать в окне выбора и в конце возвращать строку, выбранную в QTreeViewWidget. Я хочу, чтобы главное окно оставалось заблокированным, пока пользователь не выберет одну строку в окне выбора и не подтвердит ее кнопкой. Я надеюсь, что вы поймете, что мне нужно.

Буду признателен за любую помощь!

Спасибо, Tiho

1 Ответ

0 голосов
/ 02 марта 2010

Я бы сделал что-то вроде этого:

  • диалоговое окно с кнопкой -> события, связанные с accept () и reject () слоты самого диалога
  • установить модальность диалогового окна на что-то похожее на модальность приложения
  • вызовите метод exec_ () диалогового окна, чтобы блокировать его до тех пор, пока пользователь не выберет ok / cancel
  • после завершения выполнения метода 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
    ...
...