如何向 QSplitter 添加布局?
How to add a layout to QSplitter?
我有一个带 3 列的垂直拆分器。在第二个内部,我想让一些按钮水平对齐,在这些按钮下方有一个 ListWidget。
问题是,我希望在拆分器的第二列内有一个垂直布局 (VBoxLayout) 以对齐列表上方的按钮。但是 Splitter 只接受 addWidget(...),不接受 addLayout(...)。
所以我无法在拆分器中添加 VBoxLayout。
将按钮放在拆分器内的 ListWidget 上方的正确方法是什么?
+--------------------------------------+
| column1 | column2 | column3 |
| ..... | button1,button2, | ....... |
| ..... | ListElement1 | ....... |
| ..... | ListElement2 | ....... |
| ..... | ListElement3 | ....... |
| ..... | ......... | ....... |
+--------------------------------------+
Splitter only accepts addWidget(...), not addLayout(...)
那句话给出了解决方案。创建一个新的 QWidget
对象并为其设置一个 QVBoxLayout
。将您想要的内容添加到布局并将小部件添加到拆分器。
你的情况:
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);
...
我有一个带 3 列的垂直拆分器。在第二个内部,我想让一些按钮水平对齐,在这些按钮下方有一个 ListWidget。 问题是,我希望在拆分器的第二列内有一个垂直布局 (VBoxLayout) 以对齐列表上方的按钮。但是 Splitter 只接受 addWidget(...),不接受 addLayout(...)。 所以我无法在拆分器中添加 VBoxLayout。 将按钮放在拆分器内的 ListWidget 上方的正确方法是什么?
+--------------------------------------+
| column1 | column2 | column3 |
| ..... | button1,button2, | ....... |
| ..... | ListElement1 | ....... |
| ..... | ListElement2 | ....... |
| ..... | ListElement3 | ....... |
| ..... | ......... | ....... |
+--------------------------------------+
Splitter only accepts addWidget(...), not addLayout(...)
那句话给出了解决方案。创建一个新的 QWidget
对象并为其设置一个 QVBoxLayout
。将您想要的内容添加到布局并将小部件添加到拆分器。
你的情况:
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);
...