使用Qt信号和插槽在两个孩子之间传输数据(C ++)

时间:2014-08-14 23:12:04

标签: c++ qt user-interface qt-signals

在Qt C ++中,我有一个父对象MainWindow。 MainWindow(以及其他)有2个成员对象:vector和Serial。

GUI的一些相关成员:

QPushButton pushButton;
int itemNumber;

Serial的相关成员:

void send(int number)

当点击GUI的成员pushButton时,我想将GUI的成员'pushButton'作为参数传递给函数Serial :: send(int number)。我看到了一个像

这样的选项
connect(GUI,SIGNAL(clicked()),this,SLOT(customSlot()));

在我的MainWindow函数中。但是,我不知道它的载体中有哪个项目,所以我不知道要抓取哪个itemNumber(它们都不同)。

我也想过我可能会在GUI类中这样做,但是它无法访问Serial :: send(int number)方法。我不想在每个GUI中使用Serial对象,因为此时它不会以这种方式工作。

如何从信号中将子对象GUI中的信息传递给父对象MainWindow?

谢谢!

1 个答案:

答案 0 :(得分:2)

在插槽中使用QObject::sender()功能来获取发送信号的对象。 当然,你需要一些合适的演员方法:

void someSlot() {
    QPushButton *sender = qobject_cast<QPushButton *>(sender()); 
    ...
}