Chinaunix

标题: Qt创建置顶、悬浮容器并实现拖动通用代码 [打印本页]

作者: starzhestarzhe    时间: 2010-11-21 17:27
标题: Qt创建置顶、悬浮容器并实现拖动通用代码
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();
}




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2