图像质量有待提高。上面是 WhatsApp +- 中相同尺寸的图片,下面是我的应用程序中的图片。
#include <QtWidgets>
#include <QPainter>
class ChatWidgetInList : public QWidget {
Q_OBJECT
private:
QPixmap _icon;
QString _chatName;
QString _lastMsg;
QString _lastMsgDate;
QLabel lbl;
bool _isPinned;
public:
ChatWidgetInList(QString chatName, QString lastMsg, QString lastMsgDate, bool isPinned, QWidget* wgt = 0) : QWidget(wgt) {
setFixedHeight(64);
setMinimumWidth(400);
setMaximumWidth(512);
_chatName = chatName;
_lastMsg = lastMsg;
_lastMsgDate = lastMsgDate;
_isPinned = isPinned;
_icon = QPixmap("E:\\QtProjects\\build-testingWidgets-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\\debug\\" + _chatName + ".png");
lbl.setPixmap(_icon);
lbl.show();
QFile file("E:\\QtProjects\\build-testingWidgets-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\\debug\\" + _chatName + ".png");
qDebug() << file.exists();
}
virtual void paintEvent(QPaintEvent*)override{
QPainter painter;
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QLinearGradient gradient1(64, 0, width(), height());
gradient1.setColorAt(1, QColor(38,39,40));
gradient1.setColorAt(0, QColor(64,66,68));
painter.setPen(Qt::white);
painter.setBrush(QBrush(QColor(38,39,40)));
painter.drawRect(0, 0, 63, 64);
painter.setBrush(gradient1);
painter.drawRect(64, 0, width() - 64, 64);
painter.drawLine(64, 0, 64, 64);
painter.drawRoundRect(68, 4, width() - 72, 56, 5, 25);
qreal scaleX = 56/float(_icon.size().width());
qreal scaleY = 56/float(_icon.size().height());
painter.scale(scaleX, scaleY);
painter.setBrush(QBrush(Qt::black, _icon));
painter.drawEllipse(4 / scaleX, 4 / scaleY, 56 / scaleX, 56 / scaleY);
painter.scale(1 / scaleX, 1 / scaleY);
QFont font;
font.setBold(true);
font.setPixelSize(14);
painter.setFont(font);
painter.drawText(72, 20, _chatName);
font.setBold(false);
font.setPixelSize(13);
painter.setFont(font);
painter.drawText(72, 52, _lastMsg);
painter.end();
}
};