En Qt, cuando agrego widgets a mi diseño, se centran verticalmente de forma predeterminada. ¿Hay alguna manera de "Listar" los widgets de arriba a abajo en lugar de centrarlos verticalmente?QVBoxLayout: Cómo alinear verticalmente los widgets en la parte superior en lugar del centro
Respuesta
use el método void QLayout::setAlignment (Qt::Alignment alignment)
para establecer la alineación según su elección.
Encuentro esto un poco más complicado que simplemente usar layout.setAlignment()
. No funcionó para mí hasta ahora, cuando descubrí que si tiene widgets de expansión para los que establece una altura máxima, entonces ese widget no se alineará de la manera que desee.
Aquí es código de ejemplo que hace no superior a alinear el widget QTextBrowser()
a pesar de que yo llamo layout.setAlignment(Qt.AlignTop)
. Lamento que esté en Python, pero es bastante fácil de traducir a C++ (he ido al revés muchas veces).
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWidget(QWidget):
"""
Create a widget that aligns its contents to the top.
"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
label = QLabel('label:')
layout.addWidget(label)
info = QTextBrowser(self)
info.setMinimumHeight(100)
info.setMaximumHeight(200)
layout.addWidget(info)
# Uncomment the next line to get this to align top.
# layout.setAlignment(info, Qt.AlignTop)
# Create a progress bar layout.
button = QPushButton('Button 1')
layout.addWidget(button)
# This will align all the widgets to the top except
# for the QTextBrowser() since it has a maximum size set.
layout.setAlignment(Qt.AlignTop)
self.setLayout(layout)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
widget.resize(QSize(900, 400))
app.exec_()
El siguiente llama explícitamente layout.setAlignment(info, Qt.AlignTop)
para obtener el widget de texto gastar para trabajar.
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWidget(QWidget):
"""
Create a widget that aligns its contents to the top.
"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
label = QLabel('label:')
layout.addWidget(label)
info = QTextBrowser(self)
info.setMinimumHeight(100)
info.setMaximumHeight(200)
layout.addWidget(info)
# Uncomment the next line to get this to align top.
layout.setAlignment(info, Qt.AlignTop)
# Create a progress bar layout.
button = QPushButton('Button 1')
layout.addWidget(button)
# This will align all the widgets to the top except
# for the QTextBrowser() since it has a maximum size set.
layout.setAlignment(Qt.AlignTop)
self.setLayout(layout)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
widget.resize(QSize(900, 400))
app.exec_()
Después de la comparación entre las dos soluciones, parece que:
myLayout.setAlignment(Qt.AlignTop)
obras para varias alineación Reproductor sino:
myLayout.setAlignment(myWidget, Qt.AlignTop)
obras sólo para el primer widget que se suman a la disposición . Después de todo, la solución también depende de la QSizePolicy de sus widgets.
Si usted tiene un QVBoxLayout
y desea que sus widgets de tamaño fijo para ser apilados en la parte superior, sólo tiene que añadir un estiramiento vertical añadir al final:
layout.addStretch()
Si tiene varias camillas u otros elementos elásticos, puede especificar un argumento de factor de estiramiento entero que define su proporción de tamaño.
Véase también addStretch y addSpacerItem.
No estoy seguro de si esto responde a su pregunta original, pero es la respuesta a la que tuve cuando busqué en Google y fui guiada a esta página, por lo que podría ser útil para otros también.
¿Hay alguna forma de agregar 500 pulgares a una publicación? – Acidic
- 1. ¿Cómo alinear verticalmente el texto al centro en HTML?
- 2. Cómo alinear verticalmente una posición en el centro: elemento relativo
- 3. Alinear texto verticalmente en Navbar
- 4. cómo alinear elementos verticalmente en la etiqueta td
- 5. Elementos del centro verticalmente en CSS
- 6. ¿Cómo alinear el texto a la parte superior de TextView?
- 7. Cómo alinear verticalmente varias tablas o gráficos en Lyx
- 8. Pintar/Dibujar en la parte superior de los widgets acoplados en QDodckWidget
- 9. imagen align Android en la parte superior y en el centro RelativeLayout
- 10. Cómo alinear verticalmente vanos con el texto y la imagen
- 11. Izquierda, centro y derecha alinean div en la parte inferior de la misma línea
- 12. ¿Cómo centro verticalmente el texto de UITextField?
- 13. Cómo alinear los componentes JSF al centro
- 14. ¿Cómo alinear el centro del texto en la fila de la tabla html?
- 15. CSS - Alinear verticalmente contenido DIV
- 16. Cómo alinear verticalmente una tabla en CSS
- 17. ¿Cómo alinear objetos verticalmente en ASP.NET?
- 18. Cómo alinear verticalmente las imágenes en <td>
- 19. ¿Cómo centro verticalmente una etiqueta en un div?
- 20. ¿Cómo alinear verticalmente un texto?
- 21. cómo alinear mi imagen en el centro del IOS horizontal
- 22. Cómo alinear los elementos td en el centro
- 23. Android RelativeLayout alinear el centro de una vista en la esquina superior derecha de otra vista
- 24. Alinear verticalmente divs flotantes
- 25. verticalmente centro text-align
- 26. ¿Alinear verticalmente las figuras en las celdas de la tabla?
- 27. ¿Cómo alinear verticalmente una imagen de tamaño desconocido al centro de un div?
- 28. Cómo hacer widgets del Centro de notificaciones (iOS 5)
- 29. ¿Cómo agregar una vista en la parte superior del teclado?
- 30. ¿Cómo saltar la parte superior del archivo en PhpStorm?
Esto resolvió mi problema también. No estoy seguro * por qué * uno necesita establecer un ancho/alto mínimo. ¿Podrías quizás exponer eso? – Seth