QT信号和插槽无法提供错误消息
QT signal and slot not working giving an error message
我是QT的新手,并尝试编写信号和插槽。以下是我要运行的代码。使用"连接"功能上的插槽和信号关键字,它可以正常工作。但是我不想在连接函数上使用信号和插槽关键字,而是想使用其他方法。
class MyWindow:public QMainWindow
{
Q_OBJECT
public:
MyWindow();
};
MyWindow::MyWindow()
{
QWidget *widget=new QWidget;
QHBoxLayout *layout =new QHBoxLayout;
QSpinBox *mySlide = new QSpinBox;
mySlide->setRange(0,10);
QLCDNumber *lcdNumber= new QLCDNumber;
layout->addWidget(mySlide);
layout->addWidget(lcdNumber);
connect(mySlide,SIGNAL(valueChanged(int)),lcdNumber,SLOT(display(int)));
// connect(mySlide, &QSpinBox::valueChanged,lcdNumber, &QLCDNumber::display);
widget->setLayout(layout);
setCentralWidget(widget);
}
在上面的代码中,未注册的连接函数工作正常,但是注释的连接函数不起作用。我会遇到错误"无匹配函数可以拨打mywindow ::连接"。不知道我在这里犯了什么错误。我正在关注QT的这篇文章。
http://doc.qt.io/qt-5/qtopengl-hellogl2-window-cpp.html
问题是信号-QSpinBox::valueChanged
-和插槽-QLCDNumber::display
-对于不同的参数类型都有多个过载。您有一些选择。
1(使用 static_cast
在各种信号和插槽过载之间消除歧义...
connect(mySlide,
static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
lcdNumber,
static_cast<void(QLCDNumber::*)(int)>(&QLCDNumber::display));
或...
2(只需使用lambda
...
connect(mySlide, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
[lcdNumber](int value)
{
lcdNumber->display(value);
});
尽管使用lambda still
需要信号上的static_cast
。
相关文章:
- C++错误消息*成员参考.**初学者*
- 如何通过参数抛出错误消息
- glad 导致 glfwSwapBuffers 返回错误消息
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 重新定义预定义的 errno 错误消息 (E2BIG)
- SDL 映像:无法打开映像,仅显示错误消息
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 错误消息"expected expression"....有人知道它为什么这么说吗?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- GCC 警告和 gcc 错误消息之间的区别
- 为 c++ cin 上的输入数无效生成错误消息
- 来自带有mbedtls TLS的Mongoose Web服务器的错误消息
- 如何使用realsense摄像头调试ROS错误消息
- C++ 概念 - 需要括号中的概念会导致 2 条冲突的错误消息
- 编译器收到错误消息(textc.exe已停止)
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 使用 c++/WinRT Direct3D UWP Game DR 模板 Direct X11 的错误消息
- max_element() 给出非常奇怪的错误消息
- 不断收到错误消息,并非所有控制路径都返回值