bool QdsTextMessageControl::eventFilter(QObject *watched, QEvent *event)
{
if (watched == m_pFrameMessage)
{
if (event->type() == QEvent::Paint)
{
switch (m_TextMessageType)
{
case Me:
{
QColor colorBg(11, 19, 39);
QPainter painter(m_pFrameMessage);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothpixmapTransform);//消锯齿
painter.setPen(Qt::nopen);
QColor colorKuang(44, 116, 250);
painter.setBrush(QBrush(colorKuang));
//框加边
painter.drawRoundedRect(0, 0, m_pFrameMessage->width() - TriangleWidth, m_pFrameMessage->height(), 4, 4);
//绘制框
painter.setBrush(QBrush(colorBg));
painter.drawRoundedRect(1, 1, m_pFrameMessage->width() - TriangleWidth - 2, m_pFrameMessage->height() - 2, 4, 4);//减1表示边大小
//三角的边
QPointF pointsBorder[3] = {
QPointF(m_pFrameMessage->width(), m_pFrameMessage->height() / 2),
QPointF(m_pFrameMessage->width() - TriangleWidth, m_pFrameMessage->height() / 2 - TriangleWidth),
QPointF(m_pFrameMessage->width() - TriangleWidth, m_pFrameMessage->height() / 2 + TriangleWidth),
};
QPen pen;
pen.setColor(colorKuang);
painter.setPen(pen);
painter.drawpolygon(pointsBorder, 3);
//三角内框
QPointF points[3] = {
QPointF(m_pFrameMessage->width()-1, m_pFrameMessage->height() / 2),
QPointF(m_pFrameMessage->width() - TriangleWidth - 1, m_pFrameMessage->height() / 2 - TriangleWidth),
QPointF(m_pFrameMessage->width() - TriangleWidth - 1, m_pFrameMessage->height() / 2 + TriangleWidth),
};
pen.setColor(colorBg);
painter.setPen(pen);
painter.drawpolygon(points, 3);
return false;
}
case Kefu:
{
QColor colorBg(36, 36, 36);
QPainter painter(m_pFrameMessage);
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothpixmapTransform);//消锯齿
painter.setPen(Qt::nopen);
painter.setBrush(QBrush(colorBg));
//框加边
painter.drawRoundedRect(TriangleWidth, 0, m_pFrameMessage->width() - TriangleWidth, m_pFrameMessage->height(), 4, 4);
//三角
QPointF points[3] = {
QPointF(0, m_pFrameMessage->height() / 2),
QPointF(TriangleWidth, m_pFrameMessage->height() / 2 - TriangleWidth),
QPointF(TriangleWidth, m_pFrameMessage->height() / 2 + TriangleWidth),
};
QPen pen;
pen.setColor(colorBg);
painter.setPen(pen);
painter.drawpolygon(points, 3);
return false;
}
default:
break;
}
}
}
else
{
return false;
}
}