我看过很多关于如何使用paintevent的例子,但我就是无法让它工作。
我的 .ui 文件中有一个名为“图像”的标签,我正在尝试在其中进行绘制。我失败得很惨。在我见过的大多数例子中,他们使用
QLabel::paintEvent(e)
但我不能使用它,我得到:
error: cannot call member function 'virtual void QLabel::paintEvent(QPaintEvent*)' without object
而且,当我使用
ui->image->paintEvent(e);
我明白了
/usr/include/qt4/QtGui/qlabel.h:141: error: 'virtual void QLabel::paintEvent(QPaintEvent*)' is protected
我似乎遗漏了一些东西......这是我尝试实现的代码的一部分:
void crop_my_image::paintEvent(QPaintEvent *e)
{
ui->image->paintEvent(e);
QPainter painter(ui->image);
painter.setPen(QPen(QBrush(QColor(0,0,0,180)),1,Qt::DashLine));
painter.setBrush(QBrush(QColor(255,255,255,120)));
painter.drawRect(selectionRect);
}
crop_my_image
是QDialog类型的!
PS:如果不是ui->image->paintEvent(e);
我使用QDialog::paintEvent(e);
我可以成功绘制我的对话框,那么我应该走在正确的道路上!
提前感谢您的任何答案!