qt画four corner border(多屏幕)

1 篇文章 0 订阅

.

void DrawCorners()
{
    const int SCREEN_COUNT = 2;
    const int lineWidth = 10;
    const int lineLength = 100;
    int cc = QApplication::desktop()->screenCount();
    if (cc < SCREEN_COUNT)
    {
        return;
    }


    static int last_n = -1;
    int sn = QApplication::desktop()->screenNumber(this);
    if (last_n == sn)
    {
        return;
    }
    else
    {
        last_n = sn;
        QRect sgeo = QApplication::desktop()->screenGeometry(sn);
        static QFrame  *frame = new QFrame();
        frame->setFrameStyle(QFrame::Box | QFrame::Plain);
        frame->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowTransparentForInput | Qt::WindowDoesNotAcceptFocus | Qt::WindowStaysOnTopHint);
        frame->setGeometry(sgeo.x(), sgeo.y(), sgeo.width(), sgeo.height());    // Just some fixed values to test


        // Set a solid green thick border.
        frame->setObjectName("testframe");
        frame->setStyleSheet("#testframe {border: 10px solid green;}");


        int w = sgeo.width(), h = sgeo.height();


        QPolygon poly(QRect(0, 0, lineLength, lineWidth), true);
        poly = poly.united(QPolygon(QRect(0, 0, lineWidth, lineLength), true));
        poly = poly.united(QPolygon(QRect(w - lineLength, 0, lineLength, lineWidth), true));
        poly = poly.united(QPolygon(QRect(w - lineWidth, 0, lineWidth, lineLength), true));
        poly = poly.united(QPolygon(QRect(w - lineWidth, h - lineLength, lineWidth, lineLength), true));
        poly = poly.united(QPolygon(QRect(w - lineLength, h - lineWidth, lineLength, lineWidth), true));
        poly = poly.united(QPolygon(QRect(0, h - lineWidth, lineLength, lineWidth), true));
        poly = poly.united(QPolygon(QRect(0, h - lineLength, lineWidth, lineLength), true));


        frame->setMask(poly);
        frame->setWindowOpacity(0.4);
        frame->show();
    }
}

.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值