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

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条)

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型