QFontComboBox Styling

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Fire Spike
User
BeitrÀge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Hallo Leute

Ich habe mich jetzt fĂŒr PySide6 entschieden.
@__deets__, du hast gesiegt 😉

Ich möchte die Hintergrundfarbe usw. fĂŒr QFontComboBox mit einem Stylesheet anpassen.
FĂŒr die normale ComboBox habe ich schon ein Sheet, leider schaffe ich es nicht, dieses fĂŒr QFontComboBox anzupassen. Es wird einfach ignoriert.
Was ich fĂŒr die ComboBox habe:

Code: Alles auswÀhlen

QAbstractItemView {
     border-bottom-right-radius: 3px;
     border-bottom-left-radius: 3px;
     border: 1px solid gainsboro;
     box-shadow: transparent;
     padding: 4px 4px 4px 4px;

Code: Alles auswÀhlen

QComboBox {
    border: 1px solid gainsboro;
    border-radius: 3px;
    selection-color: black;
    selection-background-color: rgb(250, 250, 250);
}
Durch googeln habe ich leider keine Lösung gefunden.
Kann mir jemand helfen?

Danke im Voraus
Fire Spike
User
BeitrÀge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Ich habe folgendes gefunden: https://forum.qt.io/topic/102259/chang ... combobox/7
Kann ich das, was die mit C++ gemacht haben auch in Python umsetzen?
__deets__
User
BeitrÀge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sollte gehen, ja.
Fire Spike
User
BeitrÀge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Sieht jemand von euch eine bessere einfachere Option?
Ich möchte das nur ungern umschreiben, da ich nur sehr wenig Ahnung von C++ habe.
__deets__
User
BeitrÀge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sieht nicht so aus, sonst hÀtte das Stylesheet denke ich funktioniert.
Benutzeravatar
Axel-WAK
User
BeitrÀge: 62
Registriert: Dienstag 29. November 2022, 11:52

Ersetze im Stylesheet QComboBox durch QFontComboBox.
OS: LMDE5 *** Homepage *** Github Seite
__deets__
User
BeitrÀge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

@Axel-WAK: der Link, den der TE gepostet hat, sagt klar, dass das nicht ging in der Vergangenheit. Hast du das probiert, oder nur vermutet?
Benutzeravatar
Axel-WAK
User
BeitrÀge: 62
Registriert: Dienstag 29. November 2022, 11:52

Eine Vermutung hÀtte ich sicher nicht gepostet. Ich habe es schon öfter verwendet.

Gerade noch mal getestet. In der Mitte ist die QFontComboBox

Code: Alles auswÀhlen

QFontComboBox, QComboBox
{
background: #9141ac;
font-size: 8pt;
}
Bild
OS: LMDE5 *** Homepage *** Github Seite
__deets__
User
BeitrÀge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sehr schön!
Fire Spike
User
BeitrÀge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Kannst du damit auch die border-color und background-color von den aktiven items Àndern?
Benutzeravatar
Axel-WAK
User
BeitrÀge: 62
Registriert: Dienstag 29. November 2022, 11:52

Das geht wohl nicht, aber man könnte ja fĂŒr Fonts auch eine normale QComboBox nehmen.

Bild

Beispiel:

Code: Alles auswÀhlen

from PySide6.QtWidgets import (QTextEdit, QComboBox, QMainWindow, QToolBar, 
                        QApplication)
from PySide6.QtGui import Qt, QFontDatabase, QIcon,QTextCharFormat, QTextCursor
import sys

class myEditor(QMainWindow):
    def __init__(self, parent = None):
        super(myEditor, self).__init__(parent)
        self.editor = QTextEdit() 
        self.setCentralWidget(self.editor)
        self.setStyleSheet(myStyleSheet(self))
        self.createToolbar()

    def createToolbar(self):        
        ### Font Toolbar
        self.font_tb = QToolBar(self)
        self.font_tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea)
        self.font_tb.setWindowTitle("Font Toolbar")
        
        self.comboFont = QComboBox(self.font_tb)
        self.font_tb.addSeparator()
        self.font_tb.addWidget(self.comboFont)
        self.comboFont.setEditable(True)


        self.comboSize = QComboBox(self.font_tb)
        self.font_tb.addSeparator()
        self.comboSize.setObjectName("comboSize")
        self.font_tb.addWidget(self.comboSize)
        self.comboSize.setEditable(True)

        fontFamilies = QFontDatabase.families()
        for family in fontFamilies:
            self.comboFont.addItem(family)
        fontStyles = QFontDatabase.styles(family)
        for style in fontStyles:
            smoothSizes = QFontDatabase.smoothSizes(family, style)
            for points in smoothSizes:
                self.comboSize.addItem(str(points))
        self.comboSize.currentTextChanged.connect(self.textSize)
        self.comboSize.setCurrentIndex(4)
        
  
        self.addToolBar(self.font_tb)
        index = self.comboFont.findText("Ubuntu")
        self.comboFont.currentTextChanged.connect(self.textFamily)
        self.comboFont.setCurrentIndex(index)
        
        self.editor.setText("Das ist ein Text")

    def textFamily(self):
        family = self.comboFont.currentText()
        fmt = QTextCharFormat()
        fmt.setFont(family)
        self.mergeFormatOnWordOrSelection(fmt)

    def textSize(self, pointSize):
        pointSize = int(self.comboSize.currentText())
        if pointSize > 0:
            fmt = QTextCharFormat()
            fmt.setFontPointSize(pointSize)
            self.mergeFormatOnWordOrSelection(fmt)
            
    def mergeFormatOnWordOrSelection(self, format):
        cursor = self.editor.textCursor()
        if not cursor.hasSelection():
            cursor.select(QTextCursor.WordUnderCursor)

        cursor.mergeCharFormat(format)
        self.editor.mergeCurrentCharFormat(format)

  
def myStyleSheet(self):
    return """
    QComboBox
    {
    background: lightgreen;
    font-size: 10pt;
    }
    QComboBox QListView:item {
    background: lightblue;
}
    QComboBox QListView:item:hover {
    background: yellow;
    color: #222;
    border: 2px solid red;
}
    """       

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = myEditor()
    win.setWindowIcon(QIcon.fromTheme("accessories-text-editor"))
    win.setWindowTitle("RichTextEdit")
    win.setMinimumSize(640,250)
    win.show()
    app.exec()
OS: LMDE5 *** Homepage *** Github Seite
Fire Spike
User
BeitrÀge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Vielen Dank

Werde ich mir noch anschauen.
Antworten