QByteArray MainDialog::QIcon2QByteArray(QIcon icon)
{
if(icon.isNull())
return NULL;
QList<QSize>sizes = icon.availableSizes();
int maxinum = sizes[0].width();
for(int i=1;i<sizes.size();++i)
{
maxinum = qMax(maxinum,sizes.width());
}
QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(maxinum,maxinum)));//QIcon 转QPixmap
// QPixmap pixmap = icon.pixmap(QSize(32,32));//QIcon 转QPixmap
QByteArray byteArray;
// //方法一:
// QDataStream ds(&byteArray,QIODevice::WriteOnly);
// ds<<pixmap;
//方法二:
QBuffer buffer(&byteArray);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer,"PNG",20);
return byteArray;
}