Scallierung von QtWidgets

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hallo Nobuddy,

ich muss gestehen ich weiss da nicht mehr so recht weiter. Du hast irgendwelche Dinge getan, aber das ist doch ganz schoen weit entfernt von dem, was ich angemerkt habe. Und mich beschleicht das Gefuehl, dass du gar nicht nachvollziehst, was ich meine. Wenn ich davon rede, dass "dein Filter gehört nur von Qobject abgelitten. Und besser benannt. Es ist ein Filter. Kein view.", dann bezieht sich das auf deine Klasse "MyTreeView", die von QTreeView ableitet. Aber stattdessen 'MyEventFilter' heissen sollte, und von QObject ableiten. Weil sie kein View ist, sondern ein Filter, und darum weder die Funktionalitaet noch den Namen braucht. Etc.

Wenn man so sehr aneinander vorbeiredet hat das glaube ich nicht wirklich Sinn, das weiter zu fuehren.
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Schade ..., ein einfaches Beispiel hätte genügt, dann hätte ich auch verstanden, was Du mir mit Deinem Geschriebenem sagen willst.
Dazu musst Du noch nicht mal den Code neu schreiben. Copy & Paste, die von Dir beschriebenen Stellen editiert und fertig.
Ich habe schon zigmal Deine Links verfolgt, leider habe ich das Problem, kein Englisch zu beherrschen. Mit dem Google-Übersetzer ist es oft schwierig sinngemäss, das eigentliche zu verstehen. Bitte komm mir jetzt nicht mit "dann lerne erst mal E...", dazu fehlt mir einfach die Sprachbegabung und mein Alter ...
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Nochmal ein Versuch.

Code: Alles auswählen

class MyEventFilter(QObject):

    enterPressed = pyqtSignal()

    def __init__(self):
        QObject.__init__(self)

    def keyPressEvent(self, event): #QKeyEvent
        if event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
            self.enterPressed.emit()
            print('enter key pressed')


class MyWindow(QWidget):
    def __init__(self, dataList, header, *args):
        QWidget.__init__(self, *args)
        # setGeometry(x_pos, y_pos, width, height)
        self.setGeometry(70, 150, 420, 250)
        self.setWindowTitle("Click on the header to sort table")
        self.filter = MyEventFilter()
        self.installEventFilter(self.filter)

        self.table_model = MyTableModel(self, dataList, header)
        
        table_view = QTableView()
        
        # bind cell click to a method reference
        table_view.pressed.connect(self.showSelection)

        table_view.setModel(self.table_model)
        # enable sorting
        table_view.setSortingEnabled(True)

        layout = QVBoxLayout(self)
        layout.addWidget(table_view)
        self.setLayout(layout)

    def showSelection(self, item):
        cellContent = item.data()
        sf = "You clicked on {}".format(cellContent)
        # display in title bar for convenience
        self.setWindowTitle(sf)
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Ist die Klasse "MyEventFilter", so richtig?
Antworten