Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt插槽,没有呼叫的匹配功能_C++_Qt_Opengl - Fatal编程技术网

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

C++ Qt插槽,没有呼叫的匹配功能,c++,qt,opengl,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.set

我对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、 设置颜色(红色)

//蓝色和绿色也是一样
我不知道我做错了什么。

好吧,你的函数声明

 void Widget::setColor(enum color color1);
显然不符合你的要求

 void Widget::setColor(QPushButton*&);

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

哦,是的!谢谢我忘了我给按钮命名的方式和枚举元素相同。我看到了。但现在我有一个错误,sayong“red未在此范围内声明”。我应该如何声明它?@user30935在单独的头文件中提供枚举,并在需要时包含它们。好的,现在我还有一个错误:E:\Programy\Qt\5.3\mingw482\u 32\include\QtOpenGL\qgl。h:457:错误:“QGLWidget::QGLWidget(const QGLWidget&)”是私有的Q\u DISABLE\u COPY(QGLWidget)^