Ich möchte den Text der horizontalen Header in meinem QTableView mit Benutzer eingegebenen Text in mehreren QLineEdit Widgets festlegen. Ich bin neu in der Model-View-Programmierung und im Qt-Framework, also bin ich mir nicht sicher, ob dies der richtige Weg ist, aber was ich bisher erreicht habe, ist, dass in meiner MainWindow-Klasse das Widget mit den QLineEdits als gesetzt ist das zentrale Widget und dann .text() wird für alle QLineEdits aufgerufen. Das Ergebnis wird an eine Liste übergeben und die Liste der Zeichenfolgen wird als Parameter an meine Modellklasse (QAbstractTableModel) übergeben. Im Modell rufe ich die Funktion headerData() auf, um die Strings in den Spalten der rechten Spalte anzuzeigen. Da die QLineEdits jedoch leer sind, wird zunächst nichts angezeigt. Wenn ich jetzt versuche, den Text in QLineEdit zu ändern, werden die Header nicht aktualisiert und die Header bleiben leer. Welche Signale und Slots soll ich verwenden, um QLineEdit mit meinem Modell zu verbinden? Schätzen Sie jede Hilfe.Wie mache ich Text in QLineEdit Widget machen es als Header in einem QTableView gesetzt?
Antwort
Da es keinen Quellcode gibt, gebe ich Ihnen meine Meinung basierend auf meinen bisherigen Erfahrungen. Es gibt zwei Möglichkeiten, Signale und Slots zu implementieren. Eine davon ist, dass Sie mehrere "returnPressed" -Signale für alle lineEdits haben und diese mit einem Slot verbinden können, den wir "retrieve_all_line_edits" nennen können, um den gesamten Text von Ihren LineEdits zu erhalten. Jedes Mal, wenn Sie die Return-Taste drücken, egal in welcher Zeile Sie sich befinden, werden immer alle LineEdits angezeigt. Pseducode hier:
lineEdit1.returnPressed.connect(retrieve_all_line_edits)
lineEdit2.returnPressed.connect(retrieve_all_line_edits)
....
def retrieve_all_line_edits(self):
text1 = lineEdit.text()
text2 = lineEdit.text()
...
tableHeader = [text1, text2...]
table_header_update(tableHeader)
Die andere ist eine Schaltfläche mit einem „geklickt“ -Signal haben kann, und das gleiche tun retrieving etwas wie die erste.
updateButton.clicked.connect(retrieve_all_line_edits)
Die retrieve_all_line_edits ist die gleiche wie oben.
Entschuldigung für die Verwendung von Python, um dies zu erklären.
Da ich gesagt habe, dass ich QTableView noch nicht benutzt habe, kann ich Ihre Frage nicht genau beantworten. Aber ich habe das gegoogelt, und es könnte model.appendRow() oder model.insertRow() oder itemDelegate sein. Wenn es immer noch nicht funktioniert, empfehle ich stattdessen, QTableWidget zu versuchen.
Um Ihr QTableView-Widget zu aktualisieren, unabhängig davon, wie Sie Qt Creator oder Qt Designer verwenden oder Ihre Benutzeroberfläche manuell schreiben, verfügen Sie definitiv über eine Benutzeroberflächenklasse und eine aktualisierende UI-Aktionsklasse. Für Ihre UI-Klasse, so scheint es, könnte wie folgt:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.tableView = QTableView()
und in Ihrer Aktualisierung UI-Klasse, könnten Sie haben:
class UpdateUI(object):
def __init__(self, parent = None):
super(UpdateUI, self).__init__()
self.ui = Ui_MainWindow() #This from your UI class
self.ui.setupUi(self) #Initialize your UI
self.signal_connect() #a self-written function that handle signal and slots
def signal_connect(self)
self.ui.updateButton.clicked.connect(self.update_table_view)
#or you could have lineEdits with return pressed signal as what I explained in previous answer.
def update_table_view(self):
#get all the texts first
data = self.retrieve_all_line_edit()
#update your table view, you have to fill this bit of code by yourself. I just give you an example here.
self.ui.tableView.appendRow(data)
Sie können Ihre UI-Komponenten durch self.ui alle Aktionen ausführen Dies ist die Instanz Ihrer Benutzeroberflächenklasse.
Das Problem ist, dass ich nicht weiß, welche qt-Funktionen ich verwenden kann, um die Tabellenspalten zu füllen. Wie kann ich diese neue Liste von Zeichenfolgen an mein Modell übergeben, damit es aktualisiert werden kann? – user21398
- 1. Wie mache ich QLineEdit den vorherigen und den aktuellen Text in einem textChanged Signal zu senden
- 2. Wie mache ich Text und Symbole in Sticky Header schwarz?
- 3. Wie mache ich Header und Text reagieren
- 4. Wie ändere ich den Text eines QLineEdit, wenn der Benutzer auf QLineEdit in Qt klickt?
- 5. Maskieren von QLineEdit-Text
- 6. So legen Sie Text für QLineEdit fest, wenn dieser als QItemDelegate mit QTableView verwendet wird
- 7. Python wie bekomme ich QLineEdit Text?
- 8. Text aus Header Textansicht Widget
- 9. Wie mache ich einen Text als auswählbar?
- 10. Wie mache ich Header in CSS, aber ich verwende Deckkraft?
- 11. QStyledItemDelegate teilweise Text des voreingestellten QLineEdit Editors
- 12. Wie erlaube ich Benutzern, Text aus einem Text-Widget auszuwählen?
- 13. Wie QLinearGradient als QTableView Elemente Hintergrundfarbe
- 14. PyQt4 Gib dem Widget Widget, wie es vom MainWindow aufgerufen und als CentralWidget festgelegt wird?
- 15. Wie man QLineEdit in QScrollArea erweitern kann
- 16. Wie wird ein Widget abgeleitet, um weitere Elemente hinzuzufügen?
- 17. Wie machen html als Text
- 18. Performance-Problem mit QHeaderView :: ResizeToContents für vertikale Header in QTableView
- 19. Cursorposition in einem Text-Widget festlegen
- 20. Machen Sie den Hintergrund des 'Text' Widget in tkinter transparent
- 21. Wie maximale Zeichen in einem Text-Widget haben
- 22. Wie Widget in einem anderen Widget in QT?
- 23. machen QTableView Spalte schreibgeschützt Python
- 24. So markieren Sie Text in einem tkinter Text-Widget
- 25. Wie ändere ich die Header-Hintergrundfarbe eines QTableView
- 26. Wie Umlaut für Header in QTableWidget gesetzt?
- 27. Wie kann ich auf Widgets von einem benutzerdefinierten Widget zugreifen?
- 28. Wie mache ich drawString() Text fett?
- 29. Wie mache ich Datagridview editierbar und ändere es in Zahlenformat?
- 30. Wie greife ich auf das QLineEdit-Widget zu, das ich zu diesem Qt-Beispiel hinzugefügt habe?
Vielen Dank, so dumm von mir, nicht daran zu denken, ich habe an diesem ganzen Tag gearbeitet, also mind neblig ... auch ich schreibe es in Python so besonders danke für kurze Python Beispiel geben. – user21398
Ich habe ein bisschen nachgedacht und bin auf ein anderes Problem gestoßen. Nun, nachdem ich das getan habe, wie gebe ich diese neuen Werte an mein Modell weiter, damit es in meinem QTableView aktualisiert werden kann? – user21398