Frage

Hat jemand ein Problem damit gehabt, Schaltflächen (oder andere Widgets) oben auf einem Splittergriff zu platzieren?Ich habe versucht, den Griff zu bekommen, sein Layout festzulegen und die Steuerelemente dort zu platzieren, aber ich habe ein komisches Aussehen.

Mein Hauptziel ist es, einen Auswahldialog wie unten dargestellt zu erstellen: Dialogbeispiel

Was ich bekomme:
Bildbeschreibung hier eingeben

Code:

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

War es hilfreich?

Lösung

Dies ergibt ein besseres Ergebnis:

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

Für ein besseres Ergebnis würde ich vorschlagen, QSplitterHandle zu unterordnen und sizeHint() neu zu implementieren.Sehen Sie sich die QSplitterHandle-Dokumentation an.

Sie können die Layouteinstellungen ändern, um genaue Tastenpositionen zu erhalten. Zum Beispiel:

lt.addStrecth();

Um die "Relief" -Leiste zu entfernen, müssen Sie eine Unterklasse aus QSplitterHandle entfernen und den paintEvent() neu implementieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top