【问题标题】:Select & moving Qwidget in the screen在屏幕中选择并移动 Qwidget
【发布时间】:2012-07-04 02:13:16
【问题描述】:

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

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

【问题讨论】:

    标签: c++ qt mouseevent qwidget


    【解决方案1】:

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

    #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 中,您计算​​鼠标移动了多远并按该数量更新小部件的位置。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多