【发布时间】:2015-02-22 06:45:07
【问题描述】:
最难为 main 中的变量设置信号和插槽宏。当变量位于类中时非常容易做到,但是当你想在 main 中连接一个变量时,你怎么做呢?
我在 main 中有两个单选按钮,如下所示:
QRadioButton *btn_ledWhite = new QRadioButton;
QRadioButton *btn_ledBlack = new QRadioButton;
我想将这些按钮传递给设置其样式表的函数。如下所示:
btn_led->setStyleSheet("QRadioButton::indicator::unchecked{background-color:gold;}");
当我的应用程序的用户按下btn_start 时,白色播放器的 LED 应该会亮起。不幸的是,我无法将按钮从 main 传递到 signal 和 slot 宏。我想要这样的东西:
QObject::connect(btn_start, SIGNAL(clicked()), whiteClock, SLOT(updateLED(btn_ledWhite)));
然而,这是非法的 qt 语法。显然,您不能将参数传递给包装在 SLOT 宏中的函数。
你可以这样做:
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)),
&b, SLOT(setValue(int)));
...但是我不能将表示(GUI)层与业务层(即标准的 3 层架构模型...想想 MVC)混合在一起。否则我只会把这个按钮放在一个班级里,不用担心做这个线程。
有人知道如何将 main 中的变量与信号和插槽宏连接起来吗?
【问题讨论】:
-
我尝试做类似的事情,但无法让它发挥作用。 Qt 的语法非常烦人。我相信您可能必须发出信号,然后以某种方式将其捕获到插槽中。