qt两个类信号槽的连接

爱喝酒的大师傅 2016-09-15 01:43:50
我想在两个类中一个类发送信号,另一个类接收信号,加载图片。具体代码如下:
#ifndef SKINCHANGE_H
#define SKINCHANGE_H

#include <QWidget>
#include "ui_skinchange.h"
#include <sysmanten.h>
class SysManten;
class SkinChange : public QWidget
{
Q_OBJECT

public:
SkinChange(QWidget *parent = 0);
~SkinChange();

signals:
void changeSkin();
private:
Ui::SkinChange ui;
};
#endif // SKINCHANGE_H

#include "skinchange.h"
SkinChange::SkinChange(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
connect(ui.pushButton_2,SIGNAL(clicked()),this,SLOT(useSkin()));
}
SkinChange::~SkinChange()
{

}
void SkinChange::useSkin()
{
emit changeSkin();
}


另一个类
#ifndef SYSMANTEN_H
#define SYSMANTEN_H

#include <QWidget>
#include "ui_sysmanten.h"
#include <skinchange.h>
class SysManten : public QWidget
{
Q_OBJECT

public:
SysManten(QWidget *parent = 0);
~SysManten();
public slots:
void showskinInface();
void change();
private:
Ui::SysManten ui;
SkinChange *a;
};
#endif // SYSMANTEN_H

#include "sysmanten.h"
SysManten::SysManten(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
a=new SkinChange();
connect(a,SIGNAL(changeSkin()),this,SLOT(change()));
}

SysManten::~SysManten()
{

}
void SysManten::change(){
ui.label->setStyleSheet("border-image: url(:/images/Debug/skin/1_big.png)");
}
编译能通过,但是为什么不能调用槽函数那,谢谢各位大神指点了
...全文
861 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2020-03-26
  • 打赏
  • 举报
回复
我很怀疑你的编译是怎么通过的。你的类SkinChange根本就没有定义一个叫useSkin的slot函数
Qt云程序员 2020-03-25
  • 打赏
  • 举报
回复
你是怎么做到两个类头文件互相包含
kxywnljz 2016-09-19
  • 打赏
  • 举报
回复
你链接地方断点进入肯定返回false,链接都失败,如何能触发槽函数?
画茧自缚 2016-09-18
  • 打赏
  • 举报
回复
http://blog.csdn.net/zbw1185/article/details/48519371

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧