我对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(红色);
//蓝色和绿色相同 我不知道自己做错了什么。
答案 0 :(得分:0)
好吧,你的功能声明
void Widget::setColor(enum color color1);
显然与您的
电话不符 void Widget::setColor(QPushButton*&);
当然,这些QPushButton
个实例都没有建立enum color
的有效实例,因此您会遇到这些编译器错误。