我怎么把这个信号连接到插槽上呢?
How would I connect this signal to the slot
我想在我的主类foo
中创建一个信号,以便不同类中的静态方法可以发出它。我刚开始使用QT,所以我有点困惑。我目前有以下代码
class Foo : public QMainWindow
{
Q_OBJECT
public:
Foo(QWidget *parent = 0, Qt::WFlags flags = 0);
~Foo();
signals:
void UpdateSignal(int val);
private slots:
void MySlot(int val);
};
Foo::Foo(QWidget *parent, Qt::WFlags flags): QMainWindow(parent, flags)
{
//How do I connect Bfoo::somemethod() here. I know its suppose to be like
connect(xx,SIGNAL(UpdateSignal(int)),this, SLOT(MySlot(int)));
ui.setupUi(this);
}
void Foo::MySlot(int val)
{
//Do something..
}
Now I have this class
Class Bfoo
{
static void somemethod()
{
emit UpdateSignal(12);
}
}
对于静态somemethod()
如何释放UpdateSignal
有什么建议
当你发出信号时,有必要知道是哪个对象发出的。这是因为信号不是被实现为不同类之间的消息,而是(可能不同)类的实例之间的消息。其次,信号是受保护的方法。外部用户无法访问它们。你能做的是在Foo
中定义一个公共方法来做排放:
void Foo:EmitUpdateSignal(int x) {
emit UpdateSignal(x);
}
然后在你的Bfoo::somemethod()
中你需要传递一个对象它会发出信号:
void BFoo::somemethod(Foo &f) {
f.EmitUpdateSignal(12);
}
然而,注意你在做什么。您发出的信号连接到同一实例中的插槽。这表明设计有缺陷,但如果没有更多的细节,我无法给出任何提示。
相关文章:
- 升压信号2将插槽传递到成员功能以断开连接
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- QObject::连接无法将信号连接到*this*对象的插槽
- Qt5:连接:如果插槽的参数少于信号,如何使用"连接"
- 使用std::bind将Qt信号连接到插槽
- 使用信号和插槽连接多个 UI 对象
- 如果代码中没有连接任何插槽,是否有理由发出Qt信号?
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 通过排队的QT信号插槽连接发送QSHAREDPOINTERS的QVECTOR
- Qt转发插槽/连接插槽到插槽?
- 如何使用C 插槽连接QML信号
- C 提升信号和插槽连接
- Qt 我可以在构造函数中将信号/插槽连接到自身吗?
- worker是否可以在Qt中使用信号/插槽连接停止自己的线程?
- 将信号与不同类别的插槽连接
- 如何在线程和子线程之间设置信号/插槽连接
- 如何在编译期间检查信号/插槽连接?
- Qt如何使一个按钮响应时,插槽连接到它的click()信号正在运行
- 如何在不使用信号插槽连接的情况下触发操作
- Qt转发信号/插槽连接