Qt创建置顶、悬浮容器并实现拖动通用代码

发布于 2022-09-01 08:57:25 字数 2499 浏览 18 评论 0

Qt创建置顶、悬浮容器并实现拖动效果通用代码:
SmallSuspendWindow::SmallSuspendWindow(QWidget *parent,Qt::WFlags f)
{
    this->setWindowFlags(Qt::WindowStaysOnTopHint|Qt::CustomizeWindowHint|Qt::Tool);
    this->setFixedSize(50,50);
    this->setAcceptDrops(true);
    this->setBackgroundRole(QPalette::Shadow);
}
void SmallSuspendWindow::paintEvent(QPaintEvent *event)
{
    QStylePainter painter(this);
    this->pixmap = QPixmap(tr(":/images/errormessages.png"));
    painter.drawPixmap(0,0,this->pixmap);
}
/***************
                desktop DragEvent
                                  *******************/
void SmallSuspendWindow::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton){
        this->last = event->globalPos();
        this->pos0 = event->globalPos()-event->pos();
    }
}
void SmallSuspendWindow::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()!=Qt::LeftButton) return;
    QPoint movePos = this->pos0 + event->globalPos() - this->last;
    this->move(movePos);
}
void SmallSuspendWindow::dragEnterEvent(QDragEnterEvent *event)
{
    event->acceptProposedAction();
}
void SmallSuspendWindow::dropEvent(QDropEvent *event)
{
    const QMimeData *mimeData = event->mimeData();
    if(mimeData->hasUrls()) {
        QList<QUrl> urlList = mimeData->urls();
        QString text;
        if(urlList.size()>0) {
            QString urlString = urlList.at(0).toString();
            qDebug()<<qPrintable(QString("urlString:%1").arg(urlString));
        }
    }
    event->acceptProposedAction();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文