有人遇到过将按钮(或任何其他小部件)放在拆分器 handle 顶部的问题吗?我试图获取句柄、设置其布局并将控件放在那里,但我看到了一些奇怪的东西。
我的主要目标是创建一个如下所示的选择器对话框:
我得到的:
代码:
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();
最佳答案
这给出了更好的结果:
// h.setFixedWidth(30);
splitter.setHandleWidth(30);
为了获得更好的结果,我建议子类化 QSplitterHandle 并重新实现 sizeHint()
。翻看QSplitterHandle documentation .
您可以更改布局设置以获得准确的按钮位置。 例如:
lt.addStrecth();
要删除“relief”栏,您必须从 QSplitterHandle 继承并重新实现 paintEvent()
。
关于qt - 如何制作带有一组按钮的拆分器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831254/