qt - 如何向 QSplitter 添加布局?
问题描述
我有一个带有 3 列的垂直拆分器。在第二个里面我想让一些按钮水平对齐,在这些按钮下面有一个 ListWidget。问题是,我希望在拆分器的第二列内有一个垂直布局 (VBoxLayout) 以对齐列表上方的按钮。但是 Splitter 只接受 addWidget(...),而不接受 addLayout(...)。所以我不能在拆分器内添加 VBoxLayout 。将按钮放在拆分器内 ListWidget 上方的正确方法是什么?
+--------------------------------------+
| column1 | column2 | column3 |
| ..... | button1,button2, | ....... |
| ..... | ListElement1 | ....... |
| ..... | ListElement2 | ....... |
| ..... | ListElement3 | ....... |
| ..... | ......... | ....... |
+--------------------------------------+
解决方案
Splitter 只接受 addWidget(...),不接受 addLayout(...)
那句话给出了解决方案。创建一个新QWidget
对象并QVBoxLayout
为其设置 a 。将您想要的内容添加到布局并将小部件添加到拆分器。
在你的情况下:
auto *splitter = new QSplitter(this);
auto *widget = new QWidget(this);
auto *layoutColumn = new QVBoxLayout(widget);
auto *layoutButtons = new QHBoxLayout();
auto *btn1 = new QPushButton(tr("Button 1"), this);
auto *btn2 = new QPushButton(tr("Button 2"), this);
auto *list = new QListWidget(this);
layoutButtons->addWidget(btn1);
layoutButtons->addWidget(btn2);
layoutColumn->addLayout(layoutButtons);
layoutColumn->addWidget(list);
...
splitter->addWidget(widget);
...
推荐阅读
- excel - 如何从python中删除某些行的excel数据
- python - 如何将变量从文件 A 传递到文件 B 中的类中的函数
- reactjs - 如何将按钮的值传递给反应中的函数
- file - 如何从文件中获取随机行?
- macos - make: *** 没有规则来制作目标 - gfortran
- javascript - 从 HTML 文本的开头剥离所有 br 标记,直到下一个元素是文本节点 Javascript 或 jQuery
- javafx - 通过单击其他 fxml 中的按钮清除 tableview
- java - 内存泄漏将 lambda 提交到带有复制列表的线程
- javascript - 在页面重新加载时保留多个元素的切换状态
- javascript - Javascript - 拒绝从 URL 执行脚本,因为它的 MIME 类型 ('application/json') 不可执行,并且启用了严格的 MIME 类型检查