頭檔案:#include "qdrawutil.h"
1、void qDrawBorderPixmap(QPainter *painter, const QRect &target, const QMargins &margins, const QPixmap &pixmap)
将pixmap繪制到矩形的邊距中。使用painter将給定的pixmap繪制到給定的目标矩形中。pixmap将被分成九個部分,并根據邊距結構繪制。當拉伸圖像的時候Margins部分會保持原狀。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QPixmap pixmap(":/eee.jpg");
qDrawBorderPixmap(&painter,event->rect(),QMargins(120,120,120,120),pixmap);
}

2、 void qDrawPlainRect(QPainter *painter, const QRect &rect, const QColor &lineColor, int lineWidth = 1, const QBrush *fill = nullptr)
lineColor和lineWidth以給定的寬度和高度從(x,y)開繪繪制制純矩形。 除非fill為nullptr,否則矩形的内部将用填充筆刷填充。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
qDrawPlainRect(&painter,event->rect(),Qt::red,5);
}
auto brush = QBrush(Qt::blue);
qDrawPlainRect(&painter,rect,Qt::red,5,&brush);
3、void qDrawShadeLine(QPainter *painter, const QPoint &p1, const QPoint &p2, const QPalette &palette, bool sunken = true, int lineWidth = 1, int midLineWidth = 0)
在p1和p2之間繪制水準或垂直陰影線。如果點之間的線既不是水準的也不是垂直的,則什麼也沒有畫。調色闆指定陰影顔色(淺色,深色和中間色)。lineWidth指定線寬。midLineWidth指定以QPalette::mid()顔色繪制的中間線的寬度。如果sunken為true,則顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
auto rect = event->rect();
auto palette = this->palette();
qDrawShadeLine(&painter,rect.topLeft(),rect.topRight(),palette,true,50,30);
qDrawShadeLine(&painter,rect.bottomLeft(),rect.bottomRight(),palette,false,50,30);
QWidget::paintEvent(event);
}
4、void qDrawShadePanel(QPainter *painter, const QRect &rect, const QPalette &palette, bool sunken = false, int lineWidth = 1, const QBrush *fill = nullptr)
在指定的矩形處繪制陰影面闆。調色闆指定陰影顔色(淺色,深色和中間色)。 除非填充為nullptr,否則面闆的内部将用填充筆刷填充。如果sunken為true,則面闆顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
auto rect = event->rect();
auto palette = this->palette();
qDrawShadePanel(&painter,rect,palette,false,50,nullptr);
QWidget::paintEvent(event);
}
qDrawShadePanel(&painter,rect,palette,true,50,nullptr);
auto brush = QBrush(Qt::blue);
qDrawShadePanel(&painter,rect,palette,false,50,&brush);
5、void qDrawShadeRect(QPainter *painter, const QRect &rect, const QPalette &palette, bool sunken = false, int lineWidth = 1, int midLineWidth = 0, const QBrush *fill = nullptr)
繪制陰影矩形。調色闆指定陰影顔色(淺色,深色和中間色)。lineWidth指定線寬。midLineWidth指定在QPalette::mid()中繪制的中線的寬度。除非fill為nullptr,否則矩形的内部将用填充筆刷填充。
如果sunken為true,則矩形顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
auto rect = event->rect();
auto palette = this->palette();
auto brush = QBrush(Qt::blue);
qDrawShadeRect(&painter,rect,palette,false,50,30);
QWidget::paintEvent(event);
}
qDrawShadeRect(&painter,rect,palette,true,50,30);
6、void qDrawWinButton(QPainter *painter, const QRect &rect, const QPalette &palette, bool sunken = false, const QBrush *fill = nullptr)
以2像素的線寬在指定的矩形處繪制Windows樣式的按鈕。除非fill為nullptr,否則按鈕的内部将填充畫筆。調色闆指定陰影顔色(淺色,深色和中間色)。如果sunken為true,則按鈕顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
auto rect = event->rect();
auto palette = this->palette();
auto brush = QBrush(Qt::blue);
qDrawWinButton(&painter,rect,palette,false);
QWidget::paintEvent(event);
}
qDrawWinButton(&painter,rect,palette,true);
7、void qDrawWinPanel(QPainter *painter, int x, int y, int w, int h, const QPalette &palette, bool sunken = false, const QBrush *fill = nullptr)
以線寬為2像素繪制矩形指定區域的Windows樣式的面闆。除非fill為nullptr,否則按鈕的内部将填充畫筆。調色闆指定陰影顔色。如果sunken為真,則面闆顯示為凹入,否則凸起。
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setRenderHint(QPainter::Antialiasing,true);
painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
auto rect = event->rect();
auto palette = this->palette();
auto brush = QBrush(Qt::blue);
qDrawWinPanel(&painter,rect,palette,true);
QWidget::paintEvent(event);
}