Domanda

Qualcuno ha riscontrato problemi nell'inserire pulsanti (o altri widget) sulla parte superiore di una maniglia di divisione?Ho provato a ottenere la maniglia, impostare il layout e mettere i controlli lì, ma ho avuto un aspetto strano.

Il mio obiettivo principale è creare una finestra di dialogo di selezione come illustrato di seguito: Esempio di dialogo

Cosa ottengo:
inserisci qui la descrizione dell'immagine

Codice:

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();
È stato utile?

Soluzione

Questo dà risultati migliori:

// h.setFixedWidth(30);
splitter.setHandleWidth(30);

Per un risultato migliore, suggerirei di sottoclassare QSplitterHandle e reimplementare sizeHint().Consulta la documentazione QSplitterHandle .

Puoi modificare l'impostazione del layout per ottenere le posizioni esatte dei pulsanti. Ad esempio:

lt.addStrecth();

Per rimuovere "relief" -bar è necessario creare una sottoclasse da QSplitterHandle e reimplementare paintEvent().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top