Qt實現透明窗體畫線

Qt實現透明窗體畫線

通過電磁筆在簽字版上實現透明窗體簽字,帶壓感,支持mac、windows、linux,

窗體設置

//設置無邊界窗口並置頂
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setMouseTracking(true);

//窗口設置透明
setAttribute(Qt::WA_TranslucentBackground,true);
setFixedSize(1280,800);

筆跡畫線

void MainWindow::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    QPen pen;
    pen.setColor(Qt::red);
    for(int i=0; i<_lines.size(); ++i)
    {
        const QVector<Point_>& line = _lines.at(i);
        for(int j=1; j<line.size()-1; ++j)
        {
            float w = (line.at(j).p / 2048.0) * 5;
            pen.setWidthF(w);
            painter.setPen(pen);
            if (line.at(j).p <= 1 && j+2 < line.size()-1)
            {
                painter.drawLine(line.at(j+1).x, line.at(j+1).y, line.at(j+2).x, line.at(j+2).y);
            }
            else
            {
                painter.drawLine(line.at(j-1).x, line.at(j-1).y, line.at(j).x, line.at(j).y);
            }
        }
    }
}

效果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章