Qt插槽,没有匹配的呼叫功能

时间:2014-10-30 01:24:01

标签: c++ qt opengl

我对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;
}

不幸的是我收到错误说:

  

没有匹配功能forr调用' Widget :: setColor(QPushButton *&)'   w.setColor(红色);

//蓝色和绿色相同 我不知道自己做错了什么。

1 个答案:

答案 0 :(得分:0)

好吧,你的功能声明

 void Widget::setColor(enum color color1);

显然与您的

电话不符
 void Widget::setColor(QPushButton*&);

当然,这些QPushButton个实例都没有建立enum color的有效实例,因此您会遇到这些编译器错误。