gpt4 book ai didi

c++ - Qt : Pass parameter to receiving dropEvent 中的拖放问题

转载 作者:行者123 更新时间:2023-11-28 07:49:18 24 4
gpt4 key购买 nike

healthPackButton 被放置在 mysquare 上。现在我想给这个按钮添加一个值(因为我有很多 healthPackButtons 并且我希望能够区分它们)。我尝试更改 makeDrag 函数以使其接受额外参数,但我的 SIGNAL 不再匹配。

问题:如何将附加信息(=> int 值)传递到另一个类中的 dropEvent 处理程序。

对话框

    for (int i=0; i<healthPks.size(); i++){
int value = healthPks.at(i);
QPushButton *healthPackButton = new QPushButton(title,this);
connect(healthPackButton,SIGNAL(pressed()),this,SLOT(makeDrag()));
}



void Dialog::makeDrag(){
QDrag *drag = new QDrag(this);
QMimeData *mime = new QMimeData;
mime->setText("This is a test");
drag->setMimeData(mime);
drag->start();
}

mysquare

void MySquare::dropEvent(QGraphicsSceneDragDropEvent *event){
isHealthPack=true;
int xCoord = curX/width;
int yCoord = curY/height;
int value = 0; //what's the value??
const QMimeData *mimeData = event->mimeData();
emit healthMapChanged(xCoord,yCoord,value);
update();
}

最佳答案

要将附加参数放入您的插槽中,您可以使用 QSignalMapper – 文档中有一个添加 QString const& 参数的示例,但您可以使用 int 以完全相同的方式将值传递给 makeDrag(int )

然后您可以使用QMimeTypesetData (例如,使用 QByteArray::number 将您的 int 转换为 QByteArray)以将该值传递给放置目标。

关于c++ - Qt : Pass parameter to receiving dropEvent 中的拖放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184144/

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