簡體   English   中英

Qt Creator,C ++,鼠標懸停功能

[英]Qt Creator, C++, mouse over function

當我將鼠標移到橢圓上時,我想更改它的顏色。 但是我還沒有從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();
        }
    }
}

現在我只需要一個鼠標懸停事件(處理)。

我認為您正在尋找的是enterleave事件。

使用QWidget :: underMouse()檢查小部件是否在鼠標光標下方。

例如:

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);
}

在拖放操作期間,此值未正確更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM