Qt 插槽,调用没有匹配函数
Posted
技术标签:
【中文标题】Qt 插槽,调用没有匹配函数【英文标题】:Qt slot, no matching function for call 【发布时间】:2014-10-30 01:24:01 【问题描述】:我对 Qt 很陌生。我想创建一个简单的应用程序,其中使用 OpenGL 生成三角形,并通过三个按钮更改该三角形的颜色。
这是我的代码:
在 MainWindow.h 我声明槽:
public slots:
void redButton(Widget w);
void greenButton(Widget w);
void blueButton(Widget w);
它们使用 Widget 类中的函数改变颜色:
void MainWindow::redButton(Widget w)
w.setColor(red);
在 widget.h 我有:
class Widget : public QGLWidget
Q_OBJECT
public:
Widget(QWidget *parent = 0);
QSize minimumSizeHint() const;
QSize sizeHint() const;
enum color
red,
green,
blue
;
enum color c;
void setColor(enum color color1);
protected:
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
;
而函数 setColor 看起来像这样:
void Widget::setColor(enum color color1)
c = color1;
不幸的是,我收到一条错误消息:
没有匹配的函数调用 'Widget::setColor(QPushButton*&)' w.setColor(red);
//蓝色和绿色也一样 我不知道我做错了什么。
【问题讨论】:
【参考方案1】:嗯,你的函数声明
void Widget::setColor(enum color color1);
显然不符合你的要求
void Widget::setColor(QPushButton*&);
当然,这些QPushButton
实例都没有建立enum color
的有效实例,因此您会遇到那些编译器错误。
【讨论】:
哦,是的!谢谢!我忘记了我将按钮命名为与枚举元素相同的方式。我看到了。但现在我有一个错误sayong '红色没有在这个范围内声明'。我该如何申报? @user30935 在单独的头文件中提供枚举,并在需要时#include
它们。
好的,现在我还有一个错误:E:\Programy\Qt\5.3\mingw482_32\include\QtOpenGL\qgl.h:457: error: 'QGLWidget::QGLWidget(const QGLWidget&)'是私有的 Q_DISABLE_COPY(QGLWidget) ^以上是关于Qt 插槽,调用没有匹配函数的主要内容,如果未能解决你的问题,请参考以下文章