2010-03-03 18 views
10

Tengo que completar un QTreeWidget con elementos (o elementos secundarios) que pueden ser demasiado largos para caber en una sola línea, por lo que estoy buscando una manera de ajustarlos.Cómo ajustar un QTreeWidgetItem

pensé

myQTreeWidget.setWordWrap(True) 

(hecho a través de QtDesigner4) habría hecho el trabajo, pero eso no parece ser el caso.

No sé si es relevante, pero el árbol está envuelto en un marco divisor, por lo que la envoltura debe ser de alguna manera dinámica para permitir el cambio de tamaño del divisor.

¿Alguna idea? Uso PyQt4, pero se apreciarán sugerencias en cualquier idioma/enlace.

Respuesta

17

Me encontré con éxito una solución alternativa: envuelvo un QLabel en WidgetItem, estableciendo QLabel para tener capacidades de ajuste de palabras.

item = QTreeWidgetItem() 
label = QLabel('long text here') 
label.setWordWrap(True) 

MyTree.addTopLevelItem(item) 
MyTree.setItemWidget(item, 0, label) 

el comportamiento es exactamente el deseado !!

+0

Solución genial, gracias por compartir. Además, es posible que desee cambiar "clinicalBox" por "etiquetar" en su respuesta. –

+1

jeje, lo siento! Eso es lo que sucede con la copia y pegar ingenuos :) – japs

+0

Tengo un problema con el espaciado en la QLabel: http://stackoverflow.com/questions/21007272/remove-space-from-qlabel-in-a-qtreewidget – Jason

0

setWordWrap acaba causando el ajuste alrededor de los límites de palabras ... NO forzará nada en una nueva línea.

Lo que esta buscando es no es posible con la referencia predeterminada de QTreeWidget. Sugiero que se muestre el texto que es demasiado largo de una manera alternativa, como el texto sobre el mouse o una etiqueta separada. TreeViews no debe contener más de una línea de texto por artículo.

+1

pero si lo hago item = QTreeWidgetItem ([ 'un poco de texto \ n y algo más']) se muestra exactamente como era de esperar: un elemento en dos líneas. – japs

+1

No es posible el ajuste de palabras real (dinámico). Lo único que podría hacer para simular el ajuste de palabras es escribir su propia función de ajuste de palabras que agregue líneas nuevas a las picaduras de elementos en función del ancho del widget, y luego crear una señal para llamar a esa función cuando cambie el tamaño del widget . –

+1

Estoy intentando envolver un QLabel o un QText-algo dentro de un elemento, de modo que luego heredo las capacidades de envoltura de palabras del cuadro de texto, cualquiera que sea el que haga el trabajo correcto – japs

Cuestiones relacionadas