C++ Qt插槽,没有呼叫的匹配功能
我对Qt很陌生。我想创建一个简单的应用程序,其中有一个使用OpenGL生成的三角形和三个改变三角形颜色的按钮 这是我的密码: 在MainWindow.h中,我声明插槽: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
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)^