用Qt实现这样一个效果,当鼠标悬浮到图片上时,显示删除字样,当点击删除时删除该图片。常用在注册页面。例:
实现方法:用QLabel展示图片,再用一个QPushButton覆盖在图片上,按钮背景设置为透明,当鼠标移动到图片上时按钮显示,其他情况按钮隐藏。删除图片在点击删除按钮时进行。
因此需要重写鼠标移动事件:
void MainWindow::mouseMoveEvent(QMouseEvent *event) { QRect rect(ui->label->pos(), ui->label->size()); ui->pushButton_2->setVisible(rect.contains(event->pos()) && ui->label->isVisible()); }
按钮显示与否取决于当前鼠标是否在rect矩形范围中以及当前是否有图片(没有图片还删什么?)。
需要注意的是窗体要设置setMouseTracking(true);
设置为true,当鼠标移动时便能检测到鼠标移动事件。否则需要按下鼠标并且移动才能检测到。解释:
同时QLabel和QPushButton也需要设置该选项。
删除按钮背景色:
background-color: rgba(192, 192, 192, 50);
源码地址: