侧目,微笑,默叹,以为妙绝,卧槽Q-Label还有这种操作?俗称‘背景隐身’,即Alpha通道设置为0
实际上在Q-Label上显示图片、视频(分解成一帧帧图片)不算麻烦,但是在已有的视频、图片上附加图形就比较麻烦
- 事件过滤器原则上可以支持一波貌似,不过没弄懂,我写的事件过滤器只能画图(画图时视频或图片不能显示)
- 于是我试了下‘背景透明’(对于我这个CSS老司机之前见识过,尤其是在网页上)
简而言之就是在透明纸上画图,这个在这里就比较有意思了,尤其是像鼠标标定这样的操作,画圈操作部分可以分开的
这样一来,外加一个Q-Label就可以使用写好的事件过滤器操作了
- 安装事件过滤器
- 捕捉事件过滤器
- 配置画图事件
void MainWindow::Add_InstallEventFilter() { ui->LabelFor0Back->installEventFilter(this); //ui->graphicsView->setMouseTracking(true); }
bool MainWindow::eventFilter(QObject *watched, QEvent *event) { if(watched == ui->LabelFor0Back&&event->type()==QEvent::Paint) { paint(); //return QMainWindow::eventFilter(watched,event); //return FALSE; return TRUE; } else { return QMainWindow::eventFilter(watched,event); //RGB_MODE_RUN(); //return FALSE; } }
void MainWindow::paint()
{
//do something
}
paint()部分机密,不公开,反正就是配置自己的想要画的图之类,这里说一下,Qt的Q-painter类作图功能极好,但是要注意一些限制和条件
关于Coding的一些感想
- 好的代码结构真的妙啊,垃圾代码坑人,还好有点底子,不然这次大修就给我干懵了
- 虽然简单逻辑容易理解,但是适当的复杂结构还是可以怎加效率、保障逻辑,代码多不一定是好事
- 多读点书吧大兄弟,别整其它没用的,这让我想起高中班主任一句话“别整虚的,没用”,这话最近又从上课老师嘴里说了,我得好好务实一波
if() { //do } else if() { //do } else if() { //do } else { //do }
这个结构好好体会,真的有用,之前从未如此感叹过!