gpt4 book ai didi

c++ - Qt - 找不到合适的发件人()

转载 作者:行者123 更新时间:2023-11-28 01:34:05 25 4
gpt4 key购买 nike

我想确定单击了哪个按钮,但在我用来查找正确的QPushButtonfor 循环 中找不到它。指向这些 QPushButtons 的指针放在 vector 的 vector 中。

这就是我将按钮与使用按钮时要使用的功能连接起来的方式

    for(int i=0; i<size; ++i)
{
for(int j=0; j<size; ++j)
{
grid->addWidget(board->dis_board[i][j], i, j);
board->dis_board[i][j]->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
connect(board->dis_board[i][j], SIGNAL(clicked(bool)), SLOT(move()));
}
}
}

这里你提到了函数

void Game::move()
{
unsigned long x=0;
unsigned long y=0;
QPushButton* buttonSender = qobject_cast<QPushButton*>(sender());
for(; x<board->dis_board.size(); ++x)
{
for(; y<board->dis_board.size(); ++y)
{
if(board->dis_board[x][y] == buttonSender)
break;
}
}
board->move(x,y);
}

其中 move(x,y) 是一个名为 board 的对象的方法

问题是,当我在 Game::move() 中执行 for 循环 时,我的 x y 得到值 5(所以我假设找不到 sender())。

可能是什么问题?如果需要更多代码,我可以提供更多代码。

没有显示错误

最佳答案

break 语句仅退出内部 y 循环,但不退出外部 x 循环。

以下代码应该适合您:

void Game::move()
{
QPushButton* buttonSender = qobject_cast<QPushButton*>(sender());
for(unsigned long x=0; x<board->dis_board.size(); ++x)
{
for(unsigned long y=0; y<board->dis_board.size(); ++y)
{
if(board->dis_board[x][y] == buttonSender)
{
board->move(x,y);
return;
}
}
}
}

关于c++ - Qt - 找不到合适的发件人(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com