es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Propiedad personalizada en elemento individual de QTabBar para hojas de estilo.

Tengo un QTabWidget y quiero una propiedad en las pestañas individuales que indique si son persistentes o no (similar a las pestañas en VSCode, donde si no se hace doble clic en un archivo, no persistirá en el editor).

Hasta ahora tengo esto. Quiero que los TabItem con _persistent=False estén en cursiva y los demás en fuente normal.

“`
from PySide2 import QtWidgets, QtCore, QtGui

class TabItem(QtWidgets.QWidget):
def <strong>init</strong>(self, persistent=False):
super(TabItem, self).<strong>init</strong>()
self._persistent = persistent
self.setProperty('persistent', '0' if not persistent else '1')

class TabWidget(QtWidgets.QTabWidget):
def <strong>init</strong>(self):
super(TabWidget, self).<strong>init</strong>()

<pre><code> item1 = TabItem(persistent=False)
item2 = TabItem(persistent=True)

self.addTab(item1, 'PrimerItem')
self.addTab(item2, 'SegundoItem')

self.setStyleSheet("""
QTabBar::tab{
font: normal;
}
QTabBar::tab[persistent="0"]{
font: italic;
}
""")
</code></pre>

if <strong>name</strong> == '<strong>main</strong>':
import sys
app = QtWidgets.QApplication(sys.argv)
win = TabWidget()
win.show()
sys.exit(app.exec_())
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr este objetivo, podemos crear una clase personalizada de TabWidget que contenga una lista de instancias de TabItem, siendo que cada instancia tenga una propiedad persistent. Luego, podemos usar el método setProperty para configurar esta propiedad en el TabItem.

    Para estilizar las pestañas basándonos en la propiedad persistent, podemos usar el selector QTabBar::tab[persistent=0] en la hoja de estilo para seleccionar las pestañas con la propiedad persistent establecida en Falso y aplicar el estilo deseado. Podemos usar la propiedad font para establecer el estilo de fuente en cursiva para las pestañas seleccionadas.

    En el código de ejemplo proporcionado, este enfoque ya está implementado. La clase TabItem se define con un argumento persistent, y el método setProperty se utiliza para establecer la propiedad persistent en 1 o 0, dependiendo de si el argumento es Verdadero o Falso. La clase TabWidget agrega luego dos instancias de TabItem, siendo que una de ellas tiene la propiedad persistent establecida en Falso. La hoja de estilo define dos estilos para el selector QTabBar::tab, siendo que el segundo de ellos afecta a las pestañas con la propiedad persistent establecida en 0 (es decir, Falso) y aplica el estilo de fuente en cursiva.

    Cuando se ejecuta la aplicación, la segunda pestaña (“FirstItem”) se muestra con una fuente en cursiva, lo que indica que tiene la propiedad persistent establecida en Falso. La primera pestaña (“SecondItem”) se muestra con una fuente normal, lo que indica que tiene la propiedad persistent establecida en Verdadero.

Comments are closed.