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

Posted

技术标签:

【中文标题】Qt 4:移动没有标题栏的窗口【英文标题】:Qt 4: Move window without title bar 【发布时间】:2011-07-27 15:36:54 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

试试这个手动移动窗口:

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

【讨论】:

【参考方案2】:
if (event->buttons() && Qt::LeftButton) 

这个条件对每个鼠标按钮都成立

也许你记住了这一点

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

【讨论】:

以上是关于Qt 4:移动没有标题栏的窗口的主要内容,如果未能解决你的问题,请参考以下文章

在没有标题栏的 mfc c++ 中移动窗口?

如何在QT中实现自己的标题栏

如何拖动无标题栏的MFC单文档应用程序的窗口?

Qt---去掉标题栏后,最大化应用程序窗口时,窗口遮住了任务栏的问题

如何使用 QML 和 PyQt5 创建一个没有标题栏的小通知窗口

Qt窗口定制