如何解决Qt使用函数将多个信号与插槽连接起来
如果我点击按钮,我想设置字体颜色和背景颜色。
public:
void createGrid();
private slots:
void clickCell(int row,int col);
mainwindow.cpp
QVector<QVector<QPushButton*>> buttons(10);
void MainWindow::createGrid() {
qframe *frame = new qframe(this);
qgridLayout *layout = new qgridLayout(frame);
layout->setMargin(0);
layout->setSpacing(0);
for(int i = 0; i < 10; ++i){
buttons[i].resize(10);
for(int j = 0; j < 10; ++j){
QPushButton *button = new QPushButton("0");
button->setMinimumSize(50,50);
button->setMaximumSize(50,50);
connect(button,SIGNAL(released()),this,SLOT(clickCell(i,j)));
layout->addWidget(button,i,j);
buttons[i][j] = button;
}
}
setCentralWidget(frame);
}
void MainWindow::clickCell(int row,int col) {
buttons[row][col]->setStyleSheet("background-color: grey; color: red");
}
QObject::connect: No such slot MainWindow::clickCell(i,j) in ..\untitled\mainwindow.cpp:41
QObject::connect: (receiver name: 'MainWindow')
解决方法
根据评论:使用新的信号/槽语法来调用 lambda
作为槽。因此,您的 connect
调用应该类似于(未经测试)...
connect(button,&QPushButton::released,this,[=,this]
{
clickCell(i,j);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。