QTableView的弹出窗口效果不佳

时间:2017-10-20 11:58:24

标签: qt qtableview

我有一个QTableView,当鼠标悬停在弹出窗口上时会弹出该内容。在大多数情况下它运行良好,但有时当我移动鼠标时,弹出窗口变得透明。我已经完成了代码,但仍然没有找到原因。 正确的案例和不正确的案例如下所示。

enter image description here

enter image description here

与此弹出窗口相关的代码如下所示:

bool eventFilter(QObject *watched, QEvent *event){
    if(viewport() == watched){
        if(event->type() == QEvent::MouseMove){
            QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
            QModelIndex index = indexAt(mouseEvent->pos());
            if(index.isValid()){
                showPopup(index);
            }
            else{
                popup->hide();
            }
        }
        else if(event->type() == QEvent::Leave){
            popup->hide();
        }
    }
    else if(popup == watched){
        if(event->type() == QEvent::Leave){
            popup->hide();
        }
    }
    return QTableView::eventFilter(watched, event);d
}


void showPopup (const QModelIndex &index) const {
    if(index.column() == 1){
        QRect r = visualRect(index);
        popup->move(viewport()->mapToGlobal(r.bottomLeft()));

        QString showString = index.data(Qt::DisplayRole).toString();
        for (int i = 0; i<8; i++){
            showString = showString.replace(17+18*i,1,QChar(' '));
        }

        popupLabel->setText(showString);

        popup->adjustSize();
        popup->show();
    }
    else {
        popup->hide();
    }
}

可能有用的线索是当我改变时

        if(event->type() == QEvent::Leave){
            popup->hide();
        }

           Popup->hide();

弹出窗口始终是透明的。完整项目位于git@github.com:bigbigda/DbgGUI.git

0 个答案:

没有答案
相关问题