0

AhealthPackButtonはにドロップされますmysquare。ここで、このボタンに値を追加したいと思います(healthPackButtonが多数あり、それらを区別できるようにしたいため)。makeDrag関数を変更して、追加のパラメーターを受け入れるようにしましたが、SIGNALが一致しなくなりました。

質問:別のクラス内のdropEventハンドラーに追加情報(=> int値)を渡すにはどうすればよいですか?

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();
}
4

1 に答える 1

1

スロットに追加のパラメーターを取得するには、 a を使用できます。ドキュメントにはパラメーターQSignalMapperを追加する例がありますが、まったく同じ方法で を使用して値を に渡すことができます。QString const&intmakeDrag(int)

次に、 を使用してQMimeType(たとえば、を使用して変換する)、その値をドロップ ターゲットに取得できますsetDataintQByteArrayQByteArray::number

于 2013-01-06T16:38:16.580 に答える