Seite 1 von 1
QFontComboBox Styling
Verfasst: Mittwoch 23. November 2022, 19:07
von Fire Spike
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
Re: QFontComboBox Styling
Verfasst: Freitag 25. November 2022, 09:27
von Fire Spike
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?
Re: QFontComboBox Styling
Verfasst: Freitag 25. November 2022, 09:41
von __deets__
Sollte gehen, ja.
Re: QFontComboBox Styling
Verfasst: Freitag 25. November 2022, 16:58
von Fire Spike
Sieht jemand von euch eine bessere einfachere Option?
Ich möchte das nur ungern umschreiben, da ich nur sehr wenig Ahnung von C++ habe.
Re: QFontComboBox Styling
Verfasst: Freitag 25. November 2022, 17:38
von __deets__
Sieht nicht so aus, sonst hätte das Stylesheet denke ich funktioniert.
Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 12:00
von Axel-WAK
Ersetze im Stylesheet QComboBox durch QFontComboBox.
Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 14:57
von __deets__
@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?
Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 17:31
von Axel-WAK
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;
}

Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 18:09
von __deets__
Sehr schön!
Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 18:27
von Fire Spike
Kannst du damit auch die border-color und background-color von den aktiven items ändern?
Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 20:13
von Axel-WAK
Das geht wohl nicht, aber man könnte ja für Fonts auch eine normale QComboBox nehmen.
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()
Re: QFontComboBox Styling
Verfasst: Dienstag 29. November 2022, 21:14
von Fire Spike
Vielen Dank
Werde ich mir noch anschauen.