QT循环遍历32个按钮,点击其中一个,这个按钮变背景色
时间: 2023-08-08 15:13:19 浏览: 85
可以使用一个 `for` 循环遍历32个按钮,然后为每个按钮连接相应的 `clicked` 信号槽,当按钮被点击时,改变其背景色。
以下是一个简单的示例代码:
```cpp
#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
w.setWindowTitle("Button Demo");
w.resize(400, 300);
QPushButton *buttons[32];
for (int i = 0; i < 32; i++) {
buttons[i] = new QPushButton(&w);
buttons[i]->setText(QString::number(i+1));
buttons[i]->setGeometry(50 + i%8 * 40, 50 + i/8 * 40, 30, 30);
QObject::connect(buttons[i], &QPushButton::clicked, [=]() {
buttons[i]->setStyleSheet("background-color: red");
});
}
w.show();
return a.exec();
}
```
在上面的代码中,我们创建了一个包含32个按钮的窗口,并通过 `for` 循环设置每个按钮的位置和文本。然后,我们为每个按钮连接了一个 `clicked` 信号槽,当按钮被点击时,我们使用 `setStyleSheet` 方法改变其背景色。这里使用了一个 lambda 表达式来获取按钮的索引 `i`,因为 `clicked` 信号没有提供任何参数。
阅读全文