【问题标题】:Qt decided to ignore functions?Qt 决定忽略函数?
【发布时间】:2021-06-24 18:10:51
【问题描述】:

所以我有这个带有无框窗口的项目,为了在屏幕上移动它们,为每个窗口制作了这样的功能:

window.h

private:
    Ui::MainWindow *ui;
    void main_mousePressEvent(QMouseEvent *event);
    void main_mouseMoveEvent(QMouseEvent *event);
    int m_nMouseClick_X_Coordinate;
    int m_nMouseClick_Y_Coordinate;

window.cpp

void MainWindow::main_mousePressEvent(QMouseEvent *event) {
    m_nMouseClick_X_Coordinate = event->position().x();
    m_nMouseClick_Y_Coordinate = event->position().y();
    //qDebug() << m_nMouseClick_X_Coordinate << " 1 " << m_nMouseClick_Y_Coordinate;
}

void MainWindow::main_mouseMoveEvent(QMouseEvent *event) {
    move(event->globalPosition().x()-m_nMouseClick_X_Coordinate,event->globalPosition().y()-m_nMouseClick_Y_Coordinate);
    //qDebug() << m_nMouseClick_X_Coordinate << " 2 " << m_nMouseClick_Y_Coordinate;
}

在我重新启动计算机并再次运行程序之前效果很好......由于某种原因,现在窗口不移动了,知道发生了什么吗?

附: Qt版本。 - 6

【问题讨论】:

    标签: c++ qt qt6


    【解决方案1】:

    也许是个愚蠢的问题,但是您是否启用了鼠标跟踪?例如。窗口构造函数中的setMouseTracking(true);

    此外,通过您的实现,即使您没有按下鼠标,窗口也会不断移动。我这样做的方法是覆盖两个函数:onMousePressEvent()onMouseReleaseEvent(),并创建一个变量isMousePressed,在移动窗口之前将在mouseMoveEvent() 中进行检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-28
      • 2014-07-30
      • 1970-01-01
      • 2023-03-07
      • 2013-03-21
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多