zyz414275148 2015-08-01 15:05 采纳率: 66.7%
浏览 4338
已采纳

QT中点击右上角红叉调用的函数

我查阅资料知道了QT中点击右上红叉调用的是QWidget类下的closeEvent函数
但是我现在想重写 比如点击时,让ui中的某个label显示的内容改变
但是里面不能直接调用ui->QLabel 请问怎么实现这一点啊~

  • 写回答

4条回答

  • OliverYeung 2015-08-04 16:18
    关注

    假设要显示叉叉的那个按钮类名叫CLabel
    class CLabel : public QLabel
    {
    Q_OBJECT
    public:
    CLabel(QWidget *parent = 0){}

    signals:
    void mousePress();

    protect:
    void mousePressEvent(QMouseEvent *){
    //假设你要把这个CLabel背景改成红色,这也是你说的“让ui中的某个label显示的内容改变”吧
    setStyleSheet("background-color: red");
    //如果还不够过瘾,再发个信号出去给别的控件
    emit mousePress();
    }
    };

    在你代码的某处
    ...
    CLabel *m_cLabel = new CLabel(this);
    DLabel *m_dLabel = new DLabel(this);
    connect(m_cLabel, SIGNAL(mousePress()), m_dLabel, SLOT(deleteLater())); //这样你那个CLabel点击的时候就能对另外的ui里的部件做操作啦,就比如这里的deleteLater
    //或者你不想那么狠,那就把m_dLabel的背景改成黄色吧
    connect(m_cLabel, &CLabel::mousePress, [=]{
    //这种connect的写法前提是你用的qt版本大于5.0并且在pro文件中加入了c++ 11的支持啦
    m_dLabel.setStyleSheet("background-color: yellow");
    });
    (这段代码我没有测试,自己玩玩吧,应该是你说的那个意思了,毕竟你所说的红叉在哪我是抠烂了这个网页也没有找到啊)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题