Mein lieber Scholli..
self.moviesTable.model().setModel(self.proxy_model)
Das ist die Zeile.
self.moviesTable ist der View. Der soll das Proxy Model bekommen. Dafür soll seine setModel-Methode aufgerufen werden.
Aber aus irgendeinem Grund hast du noch ein .model() reingepackt, das vom View das Model holt, und DANN willst du auf dem Model das Proxy Model setzen. Was Quatsch ist und darum natürlich auch nicht geht.
Und um ganz sicher zu gehen, das es verstanden wird:
self.moviesTable.setModel(self.proxy_model)
Muss da stehen.
Bis zum nächsten Fehler.
Filterfunktion mittels QSortFilterProxyModel in ein QTableWidget
Die Zeile »self.moviesTable.setModel(self.proxy_model)« hatte ich auch schon versucht. Dann erscheint der Fehler
Code: Alles auswählen
File "D:\__Sicherungsdaten\_Programmiersprachen\PycharmProjects\MovieMusicList\ListMovs.py", line 39, in __init__
self.moviesTable.setModel(self.proxy_model)
TypeError: QTableWidget.setModel() is a private method
Und schon wieder frage ich mich, woher Du die Information hast, dass man das somacht?
Die Dokumentation sagt doch ganz klar, dass serModel nicht öffentlich ist. Wenn Du ein Modell setzen willst, musst Du ein QTableView benutzen.
Die Dokumentation sagt doch ganz klar, dass serModel nicht öffentlich ist. Wenn Du ein Modell setzen willst, musst Du ein QTableView benutzen.
Und ich frage mich, warum man mir hier immer wieder nur irgendwelche Antworten um die Ohren wirft, mit denen ich nicht viel anfangen kann, obwohl ich um die richtigen Zeilen für meinen Code mit Erklärung bat. Ich bin immer noch Anfänger, und mit solchen Antworten komme ich leider kein Stück weiter
__deets__ schrieb »Und um ganz sicher zu gehen, das es verstanden wird: self.moviesTable.setModel(self.proxy_model) Muss da stehen.« das heißt für mich eigentlich, dass dies die korrekte Zeile ist. Oder sehe ich das falsch??
__deets__ schrieb »Und um ganz sicher zu gehen, das es verstanden wird: self.moviesTable.setModel(self.proxy_model) Muss da stehen.« das heißt für mich eigentlich, dass dies die korrekte Zeile ist. Oder sehe ich das falsch??
Das wäre die korrekte Zeile, wenn du den korrekten View verwenden würdest. Tust du halt nicht. Kann keiner wissen. Deine Experimente bleiben ja weitestenteils im Dunkeln. Niemand kennt den gesamten Code, niemand kennt die .ui-Datei. Und den Hinweis, das du nicht genug Kontext lieferst, den gabs ja schon häufiger. Verbessert sich auch nichts, also ist es auch kein Wunder, das man dir keine besseren Antworten geben kann.
- __blackjack__
- User
- Beiträge: 13191
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@KlaRo: *Warum* kannst Du damit nichts anfangen? Wie gesagt, das verstehen der Klassen und deren Zusammenhänge kann Dir niemand abnehmen und es ist in der Qt-Dokumentation ausführlich erklärt. Was genau verstehst Du dort nicht? Hier hat eher keiner Lust Dir jetzt genau nur diesen winzigen Teil zu zeigen, den Du ohne das Gesamtbild eher nicht verstehen wirst. „Model/View Programming“ ist ein ziemlich umfangreiches Kapitel in der Qt-Dokumentation weil das eine Sammlung von Konzepten umfasst, die zusammenspielen. Da gibt's Text mit Erklärungen, Diagramme, Beispielquelltext. Das steht da alles schon, es macht also wenig Sinn das hier stückchenweise noch mal zu wiederholen, also letztlich hier auf Zuruf ins Forum zu kopieren, weil jemand das nicht an der Quelle lesen möchte.
__deets__ ging halt davon aus, dass `self.moviesTable` der View ist, wie er ja auch im Text schrieb. Dass Du da ein `QTableWidget` stattdessen hast, ist am Code nicht zu sehen.
__deets__ ging halt davon aus, dass `self.moviesTable` der View ist, wie er ja auch im Text schrieb. Dass Du da ein `QTableWidget` stattdessen hast, ist am Code nicht zu sehen.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Ich benutze ein QtableWidget, da ich u.a. eine Tabelle mit Überschriften haben wollte und bei Doppelklick auf ein Item sich die entsprechende Datei öffnen soll.__deets__ hat geschrieben: ↑Sonntag 10. März 2024, 17:33 Das wäre die korrekte Zeile, wenn du den korrekten View verwenden würdest. Tust du halt nicht. Kann keiner wissen. Deine Experimente bleiben ja weitestenteils im Dunkeln. Niemand kennt den gesamten Code, niemand kennt die .ui-Datei. Und den Hinweis, das du nicht genug Kontext lieferst, den gabs ja schon häufiger. Verbessert sich auch nichts, also ist es auch kein Wunder, das man dir keine besseren Antworten geben kann.
Der Code der UI-Datei:
Code: Alles auswählen
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'D:\__Sicherungsdaten\_Programmiersprachen\PycharmProjects\MovieMusicList\GUI\GUI_Movies.ui'
#
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowModality(QtCore.Qt.WindowModal)
MainWindow.resize(1800, 1000)
MainWindow.setFocusPolicy(QtCore.Qt.NoFocus)
MainWindow.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setEnabled(True)
self.centralWidget.setObjectName("centralWidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralWidget)
self.gridLayout_2.setContentsMargins(11, 11, 11, 11)
self.gridLayout_2.setSpacing(6)
self.gridLayout_2.setObjectName("gridLayout_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setSpacing(6)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.newEntryButton = QtWidgets.QPushButton(self.centralWidget)
self.newEntryButton.setToolTip("")
self.newEntryButton.setObjectName("newEntryButton")
self.horizontalLayout_2.addWidget(self.newEntryButton)
self.saveCsvButton = QtWidgets.QPushButton(self.centralWidget)
self.saveCsvButton.setToolTip("")
self.saveCsvButton.setObjectName("saveCsvButton")
self.horizontalLayout_2.addWidget(self.saveCsvButton)
self.saveXlsButton = QtWidgets.QPushButton(self.centralWidget)
self.saveXlsButton.setToolTip("")
self.saveXlsButton.setObjectName("saveXlsButton")
self.horizontalLayout_2.addWidget(self.saveXlsButton)
self.gridLayout_2.addLayout(self.horizontalLayout_2, 15, 0, 1, 1)
self.progressBar = QtWidgets.QProgressBar(self.centralWidget)
self.progressBar.setEnabled(True)
self.progressBar.setProperty("value", 13)
self.progressBar.setOrientation(QtCore.Qt.Horizontal)
self.progressBar.setInvertedAppearance(False)
self.progressBar.setObjectName("progressBar")
self.gridLayout_2.addWidget(self.progressBar, 16, 0, 1, 1)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.horizontalLayout_5.setSpacing(6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.readAllMoviesButton = QtWidgets.QPushButton(self.centralWidget)
self.readAllMoviesButton.setToolTip("")
self.readAllMoviesButton.setObjectName("readAllMoviesButton")
self.horizontalLayout_5.addWidget(self.readAllMoviesButton)
self.readMainMoviesButton = QtWidgets.QPushButton(self.centralWidget)
self.readMainMoviesButton.setToolTip("")
self.readMainMoviesButton.setObjectName("readMainMoviesButton")
self.horizontalLayout_5.addWidget(self.readMainMoviesButton)
self.updateListButton = QtWidgets.QPushButton(self.centralWidget)
self.updateListButton.setToolTip("")
self.updateListButton.setObjectName("updateListButton")
self.horizontalLayout_5.addWidget(self.updateListButton)
self.addListButton = QtWidgets.QPushButton(self.centralWidget)
self.addListButton.setToolTip("")
self.addListButton.setObjectName("addListButton")
self.horizontalLayout_5.addWidget(self.addListButton)
self.gridLayout_2.addLayout(self.horizontalLayout_5, 13, 0, 1, 1)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName("horizontalLayout")
self.count_vids_lab = QtWidgets.QLabel(self.centralWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.count_vids_lab.sizePolicy().hasHeightForWidth())
self.count_vids_lab.setSizePolicy(sizePolicy)
self.count_vids_lab.setMinimumSize(QtCore.QSize(180, 15))
self.count_vids_lab.setMaximumSize(QtCore.QSize(180, 15))
self.count_vids_lab.setObjectName("count_vids_lab")
self.horizontalLayout.addWidget(self.count_vids_lab)
self.count_vids_tbr = QtWidgets.QTextEdit(self.centralWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.count_vids_tbr.sizePolicy().hasHeightForWidth())
self.count_vids_tbr.setSizePolicy(sizePolicy)
self.count_vids_tbr.setMinimumSize(QtCore.QSize(100, 22))
self.count_vids_tbr.setMaximumSize(QtCore.QSize(100, 22))
self.count_vids_tbr.setBaseSize(QtCore.QSize(0, 0))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
self.count_vids_tbr.setPalette(palette)
self.count_vids_tbr.setFrameShape(QtWidgets.QFrame.NoFrame)
self.count_vids_tbr.setFrameShadow(QtWidgets.QFrame.Plain)
self.count_vids_tbr.setLineWidth(1)
self.count_vids_tbr.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.count_vids_tbr.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.count_vids_tbr.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
self.count_vids_tbr.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
self.count_vids_tbr.setObjectName("count_vids_tbr")
self.horizontalLayout.addWidget(self.count_vids_tbr)
self.no_vids_lab = QtWidgets.QLabel(self.centralWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.no_vids_lab.sizePolicy().hasHeightForWidth())
self.no_vids_lab.setSizePolicy(sizePolicy)
self.no_vids_lab.setMinimumSize(QtCore.QSize(130, 15))
self.no_vids_lab.setMaximumSize(QtCore.QSize(130, 15))
self.no_vids_lab.setBaseSize(QtCore.QSize(0, 0))
self.no_vids_lab.setWordWrap(False)
self.no_vids_lab.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse)
self.no_vids_lab.setObjectName("no_vids_lab")
self.horizontalLayout.addWidget(self.no_vids_lab)
self.no_vids_tbr = QtWidgets.QTextEdit(self.centralWidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.no_vids_tbr.sizePolicy().hasHeightForWidth())
self.no_vids_tbr.setSizePolicy(sizePolicy)
self.no_vids_tbr.setMinimumSize(QtCore.QSize(0, 22))
self.no_vids_tbr.setMaximumSize(QtCore.QSize(16777215, 22))
self.no_vids_tbr.setBaseSize(QtCore.QSize(0, 0))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(240, 240, 240))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
self.no_vids_tbr.setPalette(palette)
self.no_vids_tbr.setFrameShape(QtWidgets.QFrame.NoFrame)
self.no_vids_tbr.setFrameShadow(QtWidgets.QFrame.Plain)
self.no_vids_tbr.setLineWidth(1)
self.no_vids_tbr.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.no_vids_tbr.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.no_vids_tbr.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.no_vids_tbr.setObjectName("no_vids_tbr")
self.horizontalLayout.addWidget(self.no_vids_tbr)
self.gridLayout_2.addLayout(self.horizontalLayout, 4, 0, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setSpacing(6)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.lineEdit_Titel = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Titel.setClearButtonEnabled(True)
self.lineEdit_Titel.setObjectName("lineEdit_Titel")
self.horizontalLayout_3.addWidget(self.lineEdit_Titel)
self.lineEdit_Gr = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Gr.setClearButtonEnabled(True)
self.lineEdit_Gr.setObjectName("lineEdit_Gr")
self.horizontalLayout_3.addWidget(self.lineEdit_Gr)
self.lineEdit_Vers = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Vers.setClearButtonEnabled(True)
self.lineEdit_Vers.setObjectName("lineEdit_Vers")
self.horizontalLayout_3.addWidget(self.lineEdit_Vers)
self.lineEdit_Spr = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Spr.setClearButtonEnabled(True)
self.lineEdit_Spr.setObjectName("lineEdit_Spr")
self.horizontalLayout_3.addWidget(self.lineEdit_Spr)
self.lineEdit_Subs = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Subs.setClearButtonEnabled(True)
self.lineEdit_Subs.setObjectName("lineEdit_Subs")
self.horizontalLayout_3.addWidget(self.lineEdit_Subs)
self.lineEdit_Format = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Format.setClearButtonEnabled(True)
self.lineEdit_Format.setObjectName("lineEdit_Format")
self.horizontalLayout_3.addWidget(self.lineEdit_Format)
self.lineEdit_Jahr = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Jahr.setClearButtonEnabled(True)
self.lineEdit_Jahr.setObjectName("lineEdit_Jahr")
self.horizontalLayout_3.addWidget(self.lineEdit_Jahr)
self.lineEdit_Aufl = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Aufl.setClearButtonEnabled(True)
self.lineEdit_Aufl.setObjectName("lineEdit_Aufl")
self.horizontalLayout_3.addWidget(self.lineEdit_Aufl)
self.lineEdit_B = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_B.setClearButtonEnabled(True)
self.lineEdit_B.setObjectName("lineEdit_B")
self.horizontalLayout_3.addWidget(self.lineEdit_B)
self.lineEdit_H = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_H.setClearButtonEnabled(True)
self.lineEdit_H.setObjectName("lineEdit_H")
self.horizontalLayout_3.addWidget(self.lineEdit_H)
self.lineEdit_Brate = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Brate.setClearButtonEnabled(True)
self.lineEdit_Brate.setObjectName("lineEdit_Brate")
self.horizontalLayout_3.addWidget(self.lineEdit_Brate)
self.lineEdit_LZ = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_LZ.setClearButtonEnabled(True)
self.lineEdit_LZ.setObjectName("lineEdit_LZ")
self.horizontalLayout_3.addWidget(self.lineEdit_LZ)
self.lineEdit_L = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_L.setClearButtonEnabled(True)
self.lineEdit_L.setObjectName("lineEdit_L")
self.horizontalLayout_3.addWidget(self.lineEdit_L)
self.lineEdit_Verz = QtWidgets.QLineEdit(self.centralWidget)
self.lineEdit_Verz.setClearButtonEnabled(True)
self.lineEdit_Verz.setObjectName("lineEdit_Verz")
self.horizontalLayout_3.addWidget(self.lineEdit_Verz)
self.gridLayout_2.addLayout(self.horizontalLayout_3, 5, 0, 1, 1)
self.moviesTable = QtWidgets.QTableWidget(self.centralWidget)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(8)
self.moviesTable.setFont(font)
self.moviesTable.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.moviesTable.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked)
self.moviesTable.setAlternatingRowColors(True)
self.moviesTable.setGridStyle(QtCore.Qt.SolidLine)
self.moviesTable.setWordWrap(True)
self.moviesTable.setObjectName("moviesTable")
self.moviesTable.setColumnCount(14)
self.moviesTable.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(7, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(8, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(9, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(10, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(11, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(12, item)
item = QtWidgets.QTableWidgetItem()
self.moviesTable.setHorizontalHeaderItem(13, item)
self.moviesTable.horizontalHeader().setVisible(True)
self.moviesTable.horizontalHeader().setCascadingSectionResizes(False)
self.moviesTable.horizontalHeader().setDefaultSectionSize(100)
self.moviesTable.horizontalHeader().setMinimumSectionSize(20)
self.moviesTable.horizontalHeader().setSortIndicatorShown(True)
self.moviesTable.horizontalHeader().setStretchLastSection(False)
self.moviesTable.verticalHeader().setVisible(True)
self.moviesTable.verticalHeader().setCascadingSectionResizes(False)
self.moviesTable.verticalHeader().setDefaultSectionSize(20)
self.moviesTable.verticalHeader().setMinimumSectionSize(20)
self.gridLayout_2.addWidget(self.moviesTable, 6, 0, 7, 1)
MainWindow.setCentralWidget(self.centralWidget)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.actionSpeichern = QtWidgets.QAction(MainWindow)
self.actionSpeichern.setObjectName("actionSpeichern")
self.actionOpen = QtWidgets.QAction(MainWindow)
self.actionOpen.setObjectName("actionOpen")
self.actionSave = QtWidgets.QAction(MainWindow)
self.actionSave.setObjectName("actionSave")
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Film-Liste"))
self.newEntryButton.setText(_translate("MainWindow", "Eintrag am Ende der Tabelle erstellen"))
self.saveCsvButton.setText(_translate("MainWindow", "Tabelle als CSV-Datei speichern"))
self.saveXlsButton.setText(_translate("MainWindow", "Tabelle als XLS-Datei speichern"))
self.readAllMoviesButton.setText(_translate("MainWindow", "Viedeos aus Verzeichnis (mit Unterordner) auslesen"))
self.readMainMoviesButton.setText(_translate("MainWindow", "Viedeos aus Verzeichnis (ohne Unterordner) auslesen"))
self.updateListButton.setText(_translate("MainWindow", "Liste nur aktualisieren"))
self.addListButton.setText(_translate("MainWindow", "Liste aktualisieren und ergänzen"))
self.count_vids_lab.setText(_translate("MainWindow", "Filmdateien / Dateien falscher Typ"))
self.count_vids_tbr.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">0</p></body></html>"))
self.no_vids_lab.setText(_translate("MainWindow", "Nicht aufgelistete Dateien:"))
self.lineEdit_Titel.setPlaceholderText(_translate("MainWindow", "Titel"))
self.lineEdit_Gr.setPlaceholderText(_translate("MainWindow", "Größe"))
self.lineEdit_Vers.setPlaceholderText(_translate("MainWindow", "Ton-Version"))
self.lineEdit_Spr.setPlaceholderText(_translate("MainWindow", "Sprache"))
self.lineEdit_Subs.setPlaceholderText(_translate("MainWindow", "Subs"))
self.lineEdit_Format.setPlaceholderText(_translate("MainWindow", "Dateiformat"))
self.lineEdit_Jahr.setPlaceholderText(_translate("MainWindow", "Jahr"))
self.lineEdit_Aufl.setPlaceholderText(_translate("MainWindow", "Auflösung"))
self.lineEdit_B.setPlaceholderText(_translate("MainWindow", "Breite"))
self.lineEdit_H.setPlaceholderText(_translate("MainWindow", "Höhe"))
self.lineEdit_Brate.setPlaceholderText(_translate("MainWindow", "Bildrate"))
self.lineEdit_LZ.setPlaceholderText(_translate("MainWindow", "Laufzeit h"))
self.lineEdit_L.setPlaceholderText(_translate("MainWindow", "Laufzeit m"))
self.lineEdit_Verz.setPlaceholderText(_translate("MainWindow", "Verzeichnis"))
self.moviesTable.setSortingEnabled(True)
item = self.moviesTable.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "Titel"))
item = self.moviesTable.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "Größe"))
item = self.moviesTable.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Ton-Version"))
item = self.moviesTable.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Sprache"))
item = self.moviesTable.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "Subs"))
item = self.moviesTable.horizontalHeaderItem(5)
item.setText(_translate("MainWindow", "Dateiformat"))
item = self.moviesTable.horizontalHeaderItem(6)
item.setText(_translate("MainWindow", "Jahr"))
item = self.moviesTable.horizontalHeaderItem(7)
item.setText(_translate("MainWindow", "Auflösung"))
item = self.moviesTable.horizontalHeaderItem(8)
item.setText(_translate("MainWindow", "Breite"))
item = self.moviesTable.horizontalHeaderItem(9)
item.setText(_translate("MainWindow", "Höhe"))
item = self.moviesTable.horizontalHeaderItem(10)
item.setText(_translate("MainWindow", "Bildrate"))
item = self.moviesTable.horizontalHeaderItem(11)
item.setText(_translate("MainWindow", "Laufzeit h"))
item = self.moviesTable.horizontalHeaderItem(12)
item.setText(_translate("MainWindow", "Laufzeit m"))
item = self.moviesTable.horizontalHeaderItem(13)
item.setText(_translate("MainWindow", "Verzeichnis"))
self.actionSpeichern.setText(_translate("MainWindow", "Speichern"))
self.actionOpen.setText(_translate("MainWindow", "Open"))
self.actionSave.setText(_translate("MainWindow", "Speichern"))
Jemand anderes hat hier gerade ein aehnliches Problem, und da habe ich das hier gebaut: viewtopic.php?p=427647#p427647
Damit kann ich ein Model dank Proxy-Model sortierbar machen. Und beachte: QTableView, *nicht* QTableWidget wurde benutzt. Laut C++-Doku hat QTableWidget zwar setModel, das finde ich verwirrend. Aber es ist auch nicht dazu gedacht, mit eigenen Models zu arbeiten, warum auch immer es dann die Methode hat... ggf. ist das dann in Python umgesetzt, weil es in C++ nicht geht, die sichtbarkeit einzuschraenken, aber habe ich nicht geprueft.
Damit kann ich ein Model dank Proxy-Model sortierbar machen. Und beachte: QTableView, *nicht* QTableWidget wurde benutzt. Laut C++-Doku hat QTableWidget zwar setModel, das finde ich verwirrend. Aber es ist auch nicht dazu gedacht, mit eigenen Models zu arbeiten, warum auch immer es dann die Methode hat... ggf. ist das dann in Python umgesetzt, weil es in C++ nicht geht, die sichtbarkeit einzuschraenken, aber habe ich nicht geprueft.
- __blackjack__
- User
- Beiträge: 13191
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__deets__: `QTableWidget` erbt von `QTableView`.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Ja eben. Dann sollte es ja auch setModel erben, und laut https://doc.qt.io/qt-6/qtablewidget-members.html hat es das auch. In C++. Warum es den dann Fehler der hier zu sehen war gibt, ist mir eben unklar.
- __blackjack__
- User
- Beiträge: 13191
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__deets__: Im C++-Header ist `setModel()` in `QTableWidget` als ``private`` deklariert.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
das ist natuerlich grober Unfug. Zum einen, dass deren tooling mir das dann nicht aus der Liste schmeisst. Das man in den Code schauen muss, ist ja nun nicht so gedacht. Zum zweiten, dass es das Lisskov-Prinzip verletzt. Und zu guter Letzt ist es semantisch natuerlich Quark:
Naja. Dreckecken hat wohl jedes Framework.
Code: Alles auswählen
#include <iostream>
class Base {
public:
virtual void test() {
std::cout << "Base::test\n";
}
};
class A : public Base {
private:
void test() override {
std::cout << "A::test\n";
}
};
int main(int argc, char *argv[])
{
A a;
// a.test(); // geht nicht, private
Base* b = &a;
b->test(); // Gibt A::test aus
return 0;
}