20200602
Qt所有事件均是受保护继承过来的
public公有继承
protected:
//事件有返回值的
void mousePressEvent(QMouseEvent *);//需要我们重写:鼠标按下去
void mouseReleaseEvent(QMouseEvent *); //鼠标弹起来
void mouseMoveEvent(QMouseEvent *); //鼠标移动
void mouseDoubleClickEvent(QMouseEvent *); //鼠标双击事件
void paintEvent(QPaintEvent *);//绘图事件(用图画;用笔画;用画刷画)。人为触发刷新 update
private slots:
void on_btn_Change_clicked();
我们需要重写【鼠标按下去】这个事件 void mousePressEvent(QMouseEvent *);
查看帮助文档

相对桌面的位置globalPos和相对窗体的位置windowPos

【鼠标弹起来】 void mouseReleaseEvent(QMouseEvent *);
【鼠标移动】 void mouseMoveEvent(QMouseEvent *);
【鼠标双击】 void mouseDoubleClickEvent(QMouseEvent *);
测试结果如下:


【鼠标左击 鼠标右击】用 button 判断。


测试结果如下:

自己敲个代码试试效果:

应用:3DMax, PhotoShop(PS)等软件中,鼠标的左键右键左滑右滑功能都是这样实现的。
【绘图事件】 void paintEvent(QPaintEvent *);
放背景图第 1 种方式:代码实现

一般不用 Picture,而用图画 Pixmap————用这种方式放背景图

放背景图第 2 种方式:改变样式表,添加资源
添加新文件:资源

先添加前缀:

再添加文件:选择文件加进去,一定要保存、保存、保存!!!(不然后面添加的时候没有……)

然后*.ui文件中,右击【改变样式表...】添加资源 background-image


屏蔽之前的 painter.drawPixmap() 代码语句,运行结果如下:没显示出来???
但是*.ui中,如下所示:

可能出现的问题:图片小,窗体大的话,图片会重复出现。
总结:一般用写代码的形式给它放背景图。
painter.drawPixmap(0,0,this->width(),this->height(),QPixmap("../20200602/shortcut.PNG"));
(2)用笔画 QPen 帮助文档F1



(2)用画刷画 QBrush 帮助文档F1看setStyle(写全“”,才能显示出来setStyle的信息)



换画刷的颜色

应用技巧:如果不知道多边形放置点的坐标,可以先通过“鼠标点击事件”,qDebug打印出鼠标所选位置的坐标,然后把坐标数据填进即可。
改变矩形(头文件 int index;):却发现改变不了。。。

解决方法:去掉 static const(当时直接从帮助文档中复制粘贴过来的。。。)
成功结果如下:

【关闭事件】 void closeEvent(QCloseEvent *);

先重写一下:

【窗体改变事件】 void resizeEvent(QResizeEvent *); //大小

一句话放在这里:CPU 23%


如果放在这里:CPU 5%


//本来update触发,则进入到绘画事件中,
//但如果在绘画事件中调用update,再进入到绘画事件中,成了一个死循环。
本文详细介绍了Qt中各种事件的处理机制,包括鼠标事件、绘图事件等,并提供了具体的代码实例,如鼠标按下、移动、释放及双击事件的处理,以及如何通过paintEvent进行绘图操作。

被折叠的 条评论
为什么被折叠?



