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

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

报告相同问题?

悬赏问题

  • ¥100 读取 IMU BNO080 数据
  • ¥15 基于RTKLIB框架写的精密单点定位-AR
  • ¥15 PFENet的预训练权重
  • ¥15 程序哪有错误怎么改?
  • ¥15 交换机和交换机之间的链路带宽以及主机带宽的理解
  • ¥15 ai创想家对战模式代码
  • ¥15 集合A由3个2行4列二维数组构成,从集合A中任意取一个二维数组元素、如果该二维数组元素的对应列位置的上、下两数都是奇数,而且仅有2个列是奇数/奇数,则该数组有意义,并放入集合B中打印输出。
  • ¥15 电信IPV6 无法外网访问吗
  • ¥15 有偿求效果比较好的遥感影像匹配的c++代码
  • ¥15 博主,你好,我下载了你的智能网联汽车辅助驾驶安全信息检测系统,现在不会运行,可以教我吗,