gpt4 book ai didi

c++ - 将指针传递给结构时 Qt 信号不起作用

转载 作者:行者123 更新时间:2023-11-28 04:05:40 31 4
gpt4 key购买 nike

我有一个发出信号的 Qt 表单;该信号传递一个指向结构的指针,该结构包含主窗口然后从我的 qextserialport 发送出去的数据负载。

这是有效的,但我做了一些 [未知] 现在当我将信号连接到插槽时,除非我更改它以使信号不传递任何东西,否则与信号的连接将不起作用。

在 mainwindow.cpp 中我有这个:

void MainWindow::qt1245ValuesReceivedFromKeypad(char *dataPtr)
{

bool connected;

qt1245Window = new qt1245(this);
connected = connect(qt1245Window,SIGNAL(sendMessageToKeypad(struct qt1245MessageStruct *qm)),this,SLOT(sendToQT1245(struct qt1245MessageStruct *qm)));
qt1245Window->setupDataFromKeypad(dataPtr);
qt1245Window->keyMapping(BinData);
qt1245Window->keyDropDownChanged("DIM");
// connected = connect(qt1245Window,SIGNAL(sendMessageToKeypad()),this,SLOT(sendToQT1245()));
qt1245Window->exec();
}

如果我取消注释第二个连接,注释第一个连接,并更改适当的代码,则连接有效。

结构是这样定义的:

struct qt1245MessageStruct
{

quint8 *dataPtr;
quint8 length;
quint8 keypadStartAddress;
quint8 programType;

};

在 qt1245.h 中,我将其作为类声明的一部分:

signals:
void sendMessageToKeypad(struct qt1245MessageStruct *qm);

在 qt1245.cpp 中。信号发出如下:

void qt1245::sendQT1245Message(qt1245MessageStruct *qm)
{

emit sendMessageToKeypad(qm);

}

如果我尝试将指针传递给结构,有人能解释为什么 connect 返回 false 吗?另外,是否可以让 Qt 提供有关连接失败原因的信息,而不是仅仅说它

如果您需要更多信息,我会发布。我不确定此时此刻有什么帮助。

FWIW 我在 Linux 上,Qt Creator 4.9.0 基于 Qt 5.12.2。

最佳答案

连接调用中的参数错误。

connect(qt1245Window,
SIGNAL(sendMessageToKeypad(struct qt1245MessageStruct*qm)),
this,
SLOT(sendToQT1245(struct qt1245MessageStruct *qm)));

参数的名称不会进入 SIGNALSLOT 宏。正确的语法是:

connect(qt1245Window,
SIGNAL(sendMessageToKeypad(struct qt1245MessageStruct*)),
this,
SLOT(sendToQT1245(struct qt1245MessageStruct *)));

关于c++ - 将指针传递给结构时 Qt 信号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58754873/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com