qt - 如何制作带有一组按钮的拆分器?

标签 qt user-interface qt-jambi

有人遇到过将按钮(或任何其他小部件)放在拆分器 handle 顶部的问题吗?我试图获取句柄、设置其布局并将控件放在那里,但我看到了一些奇怪的东西。

我的主要目标是创建一个如下所示的选择器对话框:Dialog example

我得到的:
enter image description here

代码:

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/

相关文章:

c++ - 用较小的 QPixMap 替换 QPixMap 的一部分

c++ - QInputDialog 在 getDouble() 中显示逗号而不是点

c++ - QObject::connect 没有匹配函数

java - 是否可以使用 Jambi 制作完全原生感觉的 GUI?

qt - QPlainTextEdit添加波浪线

java - 使用具有公共(public)数据源的多个 JComboBox

c# - 识别 Web 浏览器的垂直滚动到达 c# 中的最后位置

.net - 为两个独立的表单设置两个 GUI 线程是否有意义?

java - qt jambi 中的 findChild() 对我不起作用

java - Qt 的语言绑定(bind)是否以特定语言重新实现 Qt 模块?