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: Ejemplo de cuadro de diálogo

Lo que obtengo:
ingrese la descripción de la imagen aquí

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();
¿Fue útil?

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().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top