【发布时间】:2018-06-20 09:44:14
【问题描述】:
在函数 xyz() 中,我正在计算字符串值和图像数量,我需要返回所有值,如字符串和图像。那么,我需要采取什么返回类型以便它们获取所有值?
<Return-Type> MainWindow::xyz(QString m_ImgPath, int i)
{
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(); }
}
所以我需要添加返回类型。所以,它们将返回多个数据。
【问题讨论】:
-
您可以使用
QPair<QString, QImage> -
您也可以使用std::tuple、std::pair,创建一个类并返回它,将该类与std::any一起使用,有很多可能性。您提供的代码我们无法为您提供太多信息。
-
@King_nak。我通过 Qpair,当我运行这个代码时:- if (!imageData) { return QImage();然后我得到错误。最后我会返回(图像,字符串)我仍然得到错误