Solved In QT i have function xyz() and i need to return QImage and QString both?
-
In the function xyz(), I am calculating the string value and number of image and I need to return all the value like string and image. So, What I need to take the return type so they will take all value?
try { m_ImgPath = Array[i]; QByteArray m_path = m_ImgPath.toLocal8Bit(); char* ImagePath = m_path.data(); obj *m_ThumpDCMReader = obj::New(); TReader->SetFileName(ImagePath); TReader->Update(); //const QString string = NULL; const char *str_uchar = TReader->GetMetaData()->GetAttributeValue(DC::string).GetCharData(); string = QString::fromUtf8((char *)str_uchar); SPointer<ImageData> imageData = TReader->GetOutput(); if (!imageData) { return QImage(); } /// \todo retrieve just the UpdateExtent int width = imageData->GetDimensions()[0]; int height = imageData->GetDimensions()[1]; QImage image(width, height, QImage::Format_RGB32); QRgb *rgbPtr = reinterpret_cast<QRgb *>(image.bits()) + width * (height - 1); unsigned char *colorsPtr = reinterpret_cast<unsigned char *>(imageData->GetScalarPointer()); for (int row = 0; row < height; row++) { for (int col = 0; col < width; col++) { *(rgbPtr++) = QColor(colorsPtr[0], colorsPtr[1], colorsPtr[2]).rgb(); colorsPtr += imageData->GetNumberOfScalarComponents(); } rgbPtr -= width * 2; } return (Image,string) } catch (...) { return QImage(); } }
SO what I need to add the return type. So, they will return multiple data.
-
Hi,
Either create a small structure containing your data or use std::tuple.
-
@SGaistI am using QPair<QString , QImagre> and return qMakePair(string,image);
but the problem is how to receive the qMakePair value ?? -
Right, I forgot about
QPair
.It's just:
QPair<QString , QImage> returnValue = xyzy();
-
I have one another class, I want to use the value inside the class and I will make QString as string and QImage as image and I want to update the value inside the string and image. How i will update the same value inside it.
-
@amarism
Hi
You need to make access to it in some form or another.
like#include <QPair> #include <QDebug> using MyPair = QPair<QString, QImage >; // to make it better to read class DataClass { MyPair ThePair; // your pair data public: DataClass() { // constructor. adds something to the pair ThePair.first = "first"; ThePair.second = QImage(); // blank image } MyPair& getPair() { // access function. returning a reference to the pair return ThePair; } }; int main(int argc, char* argv[]) { QApplication a(argc, argv); DataClass dc; MyPair& pair = dc.getPair(); qDebug() << "org:" << pair.first; // change it pair.first = "the string"; pair.second = QImage(); qDebug() << "changed:" << pair.first;
output
org: "first"
changed: "the string"