Posts Tagged ‘paintEvent’

QT paintEvent重绘事件及窗体圆角代码

星期日, 一月 27th, 2013 191 views

利用重回paintEvent重绘事件来进行窗体重绘,本例中使用一个圆角代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void MainWindow::paintEvent(QPaintEvent *){

    QBitmap objBitmap(size());
    //QPainter用于在位图上绘画
    QPainter painter(&objBitmap);
    //填充位图矩形框(用白色填充)
    painter.fillRect(rect(),Qt::white);
    painter.setBrush(QColor(0,0,0));
    //在位图上画圆角矩形(用黑色填充)
    painter.drawRoundedRect(this->rect(),10,10);
    //使用setmask遮罩
    setMask(objBitmap);

}

在mainwindow.cpp中直接添加 MainWindow::paintEvent 方法,主窗体运行时会自动调用该处的重绘代码。
本段代码使用了遮罩原理进行圆角绘制。举一反三后,其原理可以用到更多的地方。
最后效果如下:

注意,当使用了遮罩后,程序自带的标题框会消失,或者说是被覆盖了。
本文到此,感谢关注。

BeiTown
2013.01.27