qt - ¿Cómo hago un divisor con un conjunto de botones?
-
27-10-2019 - |
Pregunta
¿Alguien tuvo problemas para colocar botones (o cualquier otro widget) en la parte superior del asa del divisor?Intenté obtener el identificador, establecer su diseño y poner los controles allí, pero obtuve un aspecto extraño.
Mi principal objetivo es crear un cuadro de diálogo de selección como se muestra a continuación:
Lo que obtengo:
Código:
QDialog dialog = new QDialog();
dialog.setLayout(new QVBoxLayout());
QSplitter splitter = new QSplitter();
splitter.setSizePolicy(new QSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.Fixed));
splitter.addWidget(new QListWidget());
splitter.addWidget(new QTableWidget());
dialog.layout().addWidget(splitter);
QSplitterHandle h = splitter.handle(1);
h.setFixedWidth(30); // I added this line to show the splitter handle
QVBoxLayout lt = new QVBoxLayout();
lt.setSpacing(0);
lt.setMargin(0);
lt.addWidget(new QPushButton("Hello", dialog));
lt.addWidget(new QPushButton("Good bye", dialog));
h.setLayout(lt);
dialog.show();
Solución
Esto da un mejor resultado:
// h.setFixedWidth(30);
splitter.setHandleWidth(30);
Para obtener mejores resultados, sugiero subclase QSplitterHandle y reimplementar sizeHint()
.Consulte la documentación de QSplitterHandle .
Puede cambiar la configuración de diseño para obtener las posiciones exactas de los botones. Por ejemplo:
lt.addStrecth();
Para eliminar la barra "relieve" debe crear una subclase de QSplitterHandle y volver a implementar paintEvent()
.