Qt 4:移动没有标题栏的窗口

时间:2011-04-01 12:00:43

标签: qt qt4 window draggable popupwindow

我有一个Qt::Popup标记的窗口(没有标题栏和关闭等按钮),并希望通过拖动\点击非标题栏区域来移动....

在Win32上,解决方案可能是WM_NCLBUTTONDOWN,但我的要求是跨平台。

2 个答案:

答案 0 :(得分:16)

尝试此操作以手动移动窗口:

void PopupWindow::mousePressEvent(QMouseEvent *event){
    mpos = event->pos();
}

void PopupWindow::mouseMoveEvent(QMouseEvent *event){
    if (event->buttons() & Qt::LeftButton) {
        QPoint diff = event->pos() - mpos;
        QPoint newpos = this->pos() + diff;

        this->move(newpos);
    }
}

并在某处声明QPoint mpos

答案 1 :(得分:5)

if (event->buttons() && Qt::LeftButton) {

此条件适用于每个鼠标按钮

也许你记住了这个

if (event->buttons() & Qt::LeftButton) {