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

QT中点击右上角红叉调用的函数
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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");
});
(这段代码我没有测试,自己玩玩吧,应该是你说的那个意思了,毕竟你所说的红叉在哪我是抠烂了这个网页也没有找到啊)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报