😊点此到文末惊喜↩︎
#include
#include namespace Ui {
class widget_2_1;
}class widget_2_1 : public QWidget
{Q_OBJECTpublic:explicit widget_2_1(QWidget *parent = nullptr);~widget_2_1();void resizeEvent(QResizeEvent *event);bool eventFilter(QObject *obj, QEvent *event);void paintEvent(QPaintEvent *);private://void set_wg2_1_background();
protected:Ui::widget_2_1 *ui;
protected:void keyPressEvent(QKeyEvent *event);};
// 绘制事件实现widget上绘制一条直线
void widget_2_1::paintEvent(QPaintEvent *)
{QPainter painter(this); // 这个this很重要painter.drawLine(80, 100, 650, 500);
}
bool widget_2_1::eventFilter(QObject *obj, QEvent *event)
{//1.在构造函数中,调用 installEventFilter()注册监视对象/*例子:zoomCheckBox->installEventFilter(this);*///2.在监视对象的eventFilter()函数中处理目标对象的事件。//如果对象是zoomCheckBox,当鼠标进入(悬停)其上,则zoomTips显示if (obj == (QObject*)ui->zoomCheckBox){if (event->type() == QEvent::Enter){ui->zoomTips->setVisible(true);}else if(event->type() == QEvent::Leave){ui->zoomTips->setVisible(false);}return false;}}
void resizeEvent(QResizeEvent *event); bool eventFilter(QObject *obj, QEvent *event); void paintEvent(QPaintEvent *);// 绘制事件 🚩点此跳转到首行↩︎