Q-Label还能这样用?

发布于 7 天前  19 次阅读


侧目,微笑,默叹,以位妙绝,卧槽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
}
    

这个结构好好体会,真的有用,之前从未如此感叹过!