gpt4 book ai didi

c++ - 在屏幕中选择并移动 Qwidget

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:46 25 4
gpt4 key购买 nike

我正在使用 QTCreator 并创建了一个 QWidget,然后我使用 setWindowFlags(Qt::CustomizeWindowHint); 隐藏了标题栏。

但我无法选择或移动我的小部件。我怎样才能使用 mouseEvent 来解决这个问题?

最佳答案

如果您希望能够通过单击和拖动(同时按住鼠标按钮)在屏幕上四处移动您的窗口,这里有一个简单的方法:

#include <QtGui>

class W: public QWidget
{
Q_OBJECT

public:
explicit W(QWidget *parent=0) : QWidget(parent) { }

protected:
void mousePressEvent(QMouseEvent *evt)
{
oldPos = evt->globalPos();
}

void mouseMoveEvent(QMouseEvent *evt)
{
const QPoint delta = evt->globalPos() - oldPos;
move(x()+delta.x(), y()+delta.y());
oldPos = evt->globalPos();
}

private:
QPoint oldPos;
};

mousePressEvent 中,您保存鼠标所在位置的全局(屏幕坐标)位置,然后在 mouseMoveEvent 中,计算鼠标移动了多远,按该数量更新小部件的位置。

请注意,如果启用了鼠标跟踪,则需要添加更多逻辑以仅在实际按下鼠标按钮时才移动窗口。 (默认禁用鼠标跟踪,mouseMoveEvent 仅在按住按钮时生成)。

关于c++ - 在屏幕中选择并移动 Qwidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com