healthPackButton
上放置了mysquare
。现在我想为这个按钮添加一个值(因为我有一些healthPackButtons,我希望能够区分它们)。我尝试更改makeDrag函数,使其接受一个额外的参数,但我的SIGNAL不再匹配。
问题:如何将其他信息(=> int值)传递给另一个类中的dropEvent处理程序。
Dialog
上课
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();
}
答案 0 :(得分:1)
要在插槽中添加其他参数,您可以使用QSignalMapper
- 文档中有一个添加QString const&
参数的示例,但您可以使用int
将值传递给makeDrag(int)
的方法相同。
然后,您可以使用QMimeType
的{{3}}(例如,使用setData
将int
转换为QByteArray
)以获取该值目标