Question

Avez-face quelqu'un un problème de mettre des boutons (ou tout autre widgets) sur le dessus d'une poignée de séparation? J'ai essayé d'obtenir la poignée, définissez sa mise en page et les contrôles mis là-bas, mais je suis un peu l'air bizarre.

Mon principal objectif est de créer une boîte de dialogue de sélection comme décrit ci-dessous: exemple de dialogue

Qu'est-ce que je reçois:

Code de:

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();
Était-ce utile?

La solution

Cela donne un meilleur résultat:

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

Pour un meilleur résultat, je vous suggère de sous-classe QSplitterHandle et réimplémentez sizeHint(). Regardez dans QSplitterHandle documentation .

Vous pouvez modifier les paramètres mise en page pour obtenir la position des boutons précis. Par exemple:

lt.addStrecth();

Pour supprimer "soulagement" -bar vous devez sous-classe de QSplitterHandle et réimplémentez paintEvent().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top