Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt创建者,C++;,鼠标悬停功能_C++_Qt_Qt Creator - Fatal编程技术网

C++ Qt创建者,C++;,鼠标悬停功能

C++ Qt创建者,C++;,鼠标悬停功能,c++,qt,qt-creator,C++,Qt,Qt Creator,当我把鼠标移到椭圆上时,我想改变它的颜色。 但我还没有从Qt Creator的“引用”和“自动完成”中找到任何内容 你们知道怎么做吗 我的一些代码: void DrawingWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.fillRect(event->rect(), Qt::white); for(int i = 0; i < pointList.size()

当我把鼠标移到椭圆上时,我想改变它的颜色。 但我还没有从Qt Creator的“引用”和“自动完成”中找到任何内容

你们知道怎么做吗

我的一些代码:

void DrawingWidget::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.fillRect(event->rect(), Qt::white);

    for(int i = 0; i < pointList.size(); i++) {
        if (pointList[i].x() >= 0 && pointList[i].y() >= 0)
            painter.drawEllipse(pointList[i], 10, 10);
    }
    painter.drawLines(lineList);
    m_mainWindow->updateCount();
}
鼠标移动事件处理程序:

void DrawingWidget::mousePressEvent(QMouseEvent *event) {
    if (event->button() == Qt::LeftButton
        && event->buttons() == Qt::LeftButton) {
        // DO STUFFF
    }
}
void DrawingWidget::mouseMoveEvent(QMouseEvent *event) {
    if (m_mainWindow->getSelectedTool() == MainWindow::moveVertexTool) {
        m_x = event->x();
        m_y = event->y();
        if (isPointNear(m_x, m_y)) {
            //STUFF
        }
            update();
        }
    }
}

现在我只需要在事件(处理程序)上方放置一个鼠标。

我认为您要查找的是和事件。

我认为您要查找的是和事件。

用于检查小部件是否在鼠标光标下

例如:

void IconButton::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    // Note isDown should really use the active state but in most styles
    // this has no proper feedback
    QIcon::Mode mode = QIcon::Disabled;
    if (isEnabled()) {
        if (isDown())
            mode = QIcon::Selected;
        else
            mode = underMouse() ? QIcon::Active : QIcon::Normal;
    }
    QPixmap pixmap = icon().pixmap(iconSize(), mode);

    QRect pixmapRect = QRect(0, 0, pixmap.width(), pixmap.height());
    pixmapRect.moveCenter(rect().center());

    if (m_autoHide)
        painter.setOpacity(m_iconOpacity);

    painter.drawPixmap(pixmapRect, pixmap);
}
在拖放操作期间,此值未正确更新

用于检查小部件是否位于鼠标光标下

例如:

void IconButton::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    // Note isDown should really use the active state but in most styles
    // this has no proper feedback
    QIcon::Mode mode = QIcon::Disabled;
    if (isEnabled()) {
        if (isDown())
            mode = QIcon::Selected;
        else
            mode = underMouse() ? QIcon::Active : QIcon::Normal;
    }
    QPixmap pixmap = icon().pixmap(iconSize(), mode);

    QRect pixmapRect = QRect(0, 0, pixmap.width(), pixmap.height());
    pixmapRect.moveCenter(rect().center());

    if (m_autoHide)
        painter.setOpacity(m_iconOpacity);

    painter.drawPixmap(pixmapRect, pixmap);
}
在拖放操作期间,此值未正确更新


请发布一段简短的代码片段。在这一点上,我们仍然知道比你的自动完成少…也。这是QWidget还是QGraphicsItem?@Greg Hewgill,@Stephan Chu:我把代码片段添加到了主帖子中。请发布一个简短的代码片段。在这一点上,我们仍然知道比你的自动完成少…也。这是QWidget还是QGraphicsItem?@Greg Hewgill,@Stephan Chu:我把这个片段添加到了主帖子中。