非常感谢亲的回复
这是一段伪代码
this代表当前QLabel的指针
QWidget temp_widget(m_parent); //创建一个临时的QWidget 局部变量
temp_widget.resize(newVideoWidth, newVideoHeight); // 设置大小
this->setParent(&temp_widget); // 将当前QLabel的父组件设置为QWidget
this->setGeometry(QRect(positionX, positionY, width, height)); // 设置QLabel 在父组件的位置
temp_widget.setAttribute(Qt::WA_TranslucentBackground); //将temp_widget背景设置为透明
QPixmap fwMarkPixmap = QPixmap::grabWidget(&temp_widget, 0, 0, -1, -1 ); // 创建一个 QPixmap (从temp_widget转换)
//QImage fwMarkImage = fwMarkPixmap.toImage(); //可以将QPixmap 转为图像
QByteArray bytes;
QBuffer qbuf(&bytes);
qbuf.open(QIODevice::WriteOnly);
//fwMarkImage.save(&qbuf, "PNG"); // QImage 存入buf
fwMarkPixmap.save(&qbuf, "PNG"); // QPixmap 存入qbuf
long qbuf_size = bytes.size();
char mBuf[64*1024] = {};
memcpy(mBuf, &bytes, qbuf_size);
string strtest;
stringstream stringtest;
stringtest.clear();
//stringtest<<&qbuf;
stringtest<<mBuf;
stringtest>>strtest;
QString tempaddr = QString::fromStdString(strtest);
QString temppattern = tempaddr + ";" + QString::number(newVideoWidth) + ";" + QString::number(newVideoHeight) + ";";
long int ret=0;
m_pAPlayer->SetConfig(614, _bstr_t(temppattern.toStdString().c_str()), &ret);
上面是我的一段代码, 鄙人才疏学浅,QT 中的 QImage 或者是 QPixmap 如何转为 setCopnfig 需要的 rgba内存区呢? 很显然代码中 我的尝试是错误的。