class _class : public QWidget { QPushButton arr[5] = { QPushButton{"SIGNAL/SLOT"}, QPushButton{"函数地址"}, QPushButton{"UI DESIGNER-转到槽"}, QPushButton{"UI DESIGNER-信号槽编辑器"}, QPushButton{"lambda表达式"} };public: _class() { this->show(); QHBoxLayout layout{}; layout.setDirection(QHBoxLayout::Direction::Down); for (int i = 0; i < 5; ++i) { arr[i].setMinimumSize(50, 20); layout.addWidget(&arr[i], i, Qt::AlignCenter); // 修改这里 } this->setLayout(&layout); connect(&arr[0], SIGNAL(clicked()), this, SLOT(showMaximized())); }};这段代码控件依旧重叠
时间: 2024-03-24 17:41:41 浏览: 40
很抱歉,我的前面的回答有误。控件重叠的原因是因为在添加按钮控件到水平布局中时,没有指定按钮控件的行和列。以下是修改后的代码:
```
class _class : public QWidget {
QPushButton arr[5] = {
QPushButton{"SIGNAL/SLOT"},
QPushButton{"函数地址"},
QPushButton{"UI DESIGNER-转到槽"},
QPushButton{"UI DESIGNER-信号槽编辑器"},
QPushButton{"lambda表达式"}
};
public:
_class() {
this->show();
QHBoxLayout layout{};
layout.setDirection(QHBoxLayout::Direction::Down);
for (int i = 0; i < 5; ++i) {
arr[i].setMinimumSize(50, 20);
layout.addWidget(&arr[i], i, 0, Qt::AlignCenter); // 修改这里
}
this->setLayout(&layout);
connect(&arr[0], SIGNAL(clicked()), this, SLOT(showMaximized()));
}
};
```
在 `addWidget()` 方法中,第二个参数指定按钮控件在布局中的行号,这里设置为了 `i`,表示每个按钮控件的行号与其在数组中的位置相同。第三个参数设为了 0,表示所有按钮控件都在第 0 列。这样就可以避免控件重叠了。
阅读全文