Частный член (QByteArray) контент странный? - PullRequest
0 голосов
/ 29 июня 2018

Вот класс:

class GraphicsScene : public QGraphicsScene
{
    Q_OBJECT

    public:
        ...
        void setCurrentFrame(const QPixmap &frame, const QByteArray &data);
        ...
    protected:
        // mouse events
        ...
    private:
        QPixmap currentFrame;
        QByteArray currentFrameData;
        ...
}

setCurrentFrame обновляет фрейм и сохраняет последний фрейм и байтовый массив в приватные члены:

void GraphicsScene::setCurrentFrame(const QPixmap &frame, const QByteArray &frameData)
{
    clear();
    addPixmap(frame);

    currentFrame = frame;
    currentFrameData = QByteArray(frameData);
    qDebug() << currentFrameData.toHex();   // this line works as expected
}

В приведенном выше коде строка qDebug() печатает байтовый массив, как и ожидалось. Теперь посмотрите на этот код:

void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    qDebug() << "GraphicsScene::mouseReleaseEvent(): frame" << currentFrameData.size();      // works! size is printed
    for (int i = 0; i < currentFrameData.size(); ++i)
        qDebug() << currentFrameData.toHex().at(i);    // works! each character is printed

    qDebug() << currentFrameData.toHex();    // does not work! no content of currentFrameData 
    ...
    emit clicked(mouseEvent.pos(), currentFrameData);  // I need this signal to send me currentFrameData
    ...
}

Я не могу получить currentFrameData контент. Мне нужно использовать currentFrameData в слоте другого класса, но он ничего не показывает даже в этом GraphicsScene самом классе. Я даже не знал, что написать в названии вопроса. В чем здесь проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...