c++ - Qt 信号/插槽问题
问题描述
我无法弄清楚这里出了什么问题。我想将一个值从一个类传递给另一个。这是代码:
主窗口.h
public slots:
void printNumbers(int);
主窗口.cpp
void MainWindow::printNumbers(int a)
{
qDebug() << a;
}
myudp.h
signals:
inline void sendBuff(int);
myudp.cpp
[***]
MainWindow *widget = new MainWindow();
connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
const bool connected = connect(this , SIGNAL(sendBuff(int)), widget ,SLOT(printNumbers(int)));
qDebug() << "Connection established?" << connected;
[***]
void MyUDP::readyRead()
{
// when data comes in
emit sendBuff(13);
[***]
}
inline void MyUDP::sendBuff(int a)
{
qDebug() << "sending " << a ;
}
主文件
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow window;
MainWindow *widget = new MainWindow();
window.setCentralWidget(widget);
window.resize(900, 600);
window.show();
MyUDP *client = new MyUDP();
return a.exec();
}
由于错误,我使用了“内联”:重复 MyUDP::sendBuff(int a)。
我不知道这是否可能是一个问题。
当我执行“ emit sendBuff(12) ”时,我只收到“ sending 12 ”,即使变量“ connected ”为真,我也没有捕捉到printNumbers()的输出。
解决方案
删除插槽的内联声明,如果您的类需要内部使用sendBuff然后声明一个新方法...
signals:
void sendBuffSignal(int);
并在 cpp
void MyUDP::sendBuff(int a)
{
qDebug() << "sending " << a ;
}
推荐阅读
- python - Python:无法展开列表
- c# - 如何检查变量是否为字符串
- d3.js - d3-zoom mouseup 事件解决方法
- python-3.x - 如何使代码在第一个链接之后跟随另一个链接?
- java - 如何在 Android HtmlCompat.fromHtml() 创建 Spanned 后停止 EditText 显示 javascript
- html - 无法在所选链接中保留 CSS 样式
- angular - combineLatest 仅在第一次发出数据
- excel - 当工作表中的值更改时从 Module1 调用函数
- docker - docker run/start:一遍又一遍地使用“run”命令对磁盘空间有显着影响吗?
- python - Pip 错误:无法识别选项 --single-version-externally-managed