Ist ein einfaches QWidget, das 5 QLables in einem QHBoxLayout enthält.
Das funktioniert bisher alles, aber alle StarRatingWidgets werden nach links oben verschoben:
In der ersten Spalte wird die Bewertung als Zahl angezeigt. Sie können sehen, dass alle Sterne leicht nach links und etwas mehr als eine Zeilenhöhe nach oben verschoben sind.
Tests haben ergeben, dass option.rect die Koordinaten mit zurückgibt (0, 0) ist die obere linke Ecke der ersten Zelle, aber star_rating_widget.render behandelt die Koordinaten so, dass (0, 0) die obere linke Ecke des Fensters ist. Die Widgets werden also um den Abstand zwischen Tabelle und Fensterrand und zusätzlich um die Höhe des Tabellenkopfes verschoben.
Bevor jemand fragt, hier der vollständige Code. Zum Ausführen ist pyside6 erforderlich.
Ich möchte eine Liste von Dateien mit Sternebewertung in einer QTableView anzeigen. Dazu verwende ich den folgenden Delegaten: [code]class StarRatingDelegate(QStyledItemDelegate): def __init__(self, parent=None): super().__init__(parent)
def paint(self, painter, option, index): file: File = index.data(Qt.UserRole) star_rating_widget = StarRatingWidget(10, self.parent()) star_rating_widget.set_rating(file.rating) star_rating_widget.render(painter, option.rect.topLeft()) [/code] [code]StarRatingWidget[/code] Ist ein einfaches QWidget, das 5 QLables in einem QHBoxLayout enthält. Das funktioniert bisher alles, aber alle StarRatingWidgets werden nach links oben verschoben: [img]https://i.sstatic.net/F2zRCMVo.png[/img]
In der ersten Spalte wird die Bewertung als Zahl angezeigt. Sie können sehen, dass alle Sterne leicht nach links und etwas mehr als eine Zeilenhöhe nach oben verschoben sind. Tests haben ergeben, dass option.rect die Koordinaten mit zurückgibt (0, 0) ist die obere linke Ecke der ersten Zelle, aber star_rating_widget.render behandelt die Koordinaten so, dass (0, 0) die obere linke Ecke des Fensters ist. Die Widgets werden also um den Abstand zwischen Tabelle und Fensterrand und zusätzlich um die Höhe des Tabellenkopfes verschoben. Bevor jemand fragt, hier der vollständige Code. Zum Ausführen ist pyside6 erforderlich. [code]#!/usr/bon/env python
from PySide6.QtCore import Qt, Signal, QAbstractItemModel, QModelIndex, QEvent from PySide6.QtGui import QMouseEvent from PySide6.QtWidgets import QApplication, QLabel, QTableView, QMainWindow, QSizePolicy, QHBoxLayout, QWidget, QStyledItemDelegate
class MainWindow(QMainWindow): def __init__(self): super().__init__()
def update(self): for i, star in enumerate(self.stars): rating = self.rating if self.rating is not None else 0 if i < rating: star.setText('★') else: star.setText('☆')
if self.rating is None: color = 'gray' weight = 'normal' elif i == self.hovered_star: color = 'blue' weight = 'bold' else: color = 'yellow' weight = 'normal'
Gibt es eine Möglichkeit, Daten aus einer ausgewählten Zeile aus einer Tabellenansicht abzurufen? Ich habe
verwendet QModelIndexList ids = ui->tableView->selectionModel()->selectedRows(); , der eine...
Ich habe ein Problem, das mit diesem Plugin wiederkehrend ist. Ich habe viele Lösungen ausprobiert, die auf Stackoverflow gelesen wurden, aber ich hatte keinen Erfolg.
Ist es vielleicht ein Problem...
Ich habe eine Ausgabe. Es gibt mir ein unerwünschtes Ergebnis mit einigen Bildern, die ich auf eine Website hochgeladen habe, um das Fotorama JQuery Plugin -Bibliothek JavaScript zu erstellen oder zu...
Ich habe eine Ausgabe. Es gibt mir ein unerwünschtes Ergebnis mit einigen Bildern, die ich auf eine Website hochgeladen habe, um das Fotorama JQuery Plugin -Bibliothek JavaScript zu erstellen oder zu...
Ich habe eine Ausgabe. Es gibt mir ein unerwünschtes Ergebnis mit einigen Bildern, die ich auf eine Website hochgeladen habe, um das Fotorama JQuery Plugin -Bibliothek JavaScript zu erstellen oder zu...