我的 GUI 包括LineEdit and a 按钮。当。。。的时候按钮单击后,插槽clicked()
叫做。我想在之间建立信号槽关系clicked()
作为信号和doSomething()
作为插槽。问题是doSomething()
无权访问 UI 并且doSomething()
依赖于文本LineEdit上班。
我看到两个解决方案:
授予 doSomething() 对 UI 的访问权限。
我希望能够将 QString 作为参数传递给 doSomething() 。 clicked() 不接受任何参数。 Qsignalmapper 可能就是我正在寻找的。然而,映射器似乎只根据信号的内容传递参数。因此,需要提前设置参数,这似乎对我没有帮助。
我该如何做解决方案2?
假设使用 C++ 解决方案,您可以考虑使用如下所示的中间信号 #2:
connect(thisWidget, SIGNAL(clicked()),
thisWidget, SLOT(slotClickHandler()));
then:
void slotClickHandler()
{
QString s = "my variable string here";
emit sigDoSomething(s);
}
还有他们:
void slotDoSomething(const QString &s)
{
// Do something interesting with s here
}
请注意,此代码片段假设您已经定义了一个新信号sigDoSomething(const QString &)
和一个私人插槽void slotDoSomething(const QString &)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)