[英]Qt, using OpenGL, QGLWidget is private
我對Qt很陌生。 我想創建一個簡單的應用程序,其中使用OpenGL生成三角形,並使用三個按鈕更改該三角形的顏色。 不幸的是我得到一個錯誤:
E:\\ Programy \\ Qt \\ 5.3 \\ mingw482_32 \\ include \\ QtOpenGL \\ qgl.h:457:錯誤:“ QGLWidget :: QGLWidget(const QGLWidget&)”是私有的Q_DISABLE_COPY(QGLWidget)
我不知道該怎么辦。 這是我的代碼:
MainWindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
QVBoxLayout *layout;
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QPushButton *redButton;
QPushButton *greenButton;
QPushButton *blueButton;
public slots:
void redSlot(Widget w);
void greenSlot(Widget w);
void blueSlot(Widget w);
};
MainWindow.cpp中的插槽如下所示:
void MainWindow::redSlot(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 c;
void setColor(enum color color1);
protected:
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
};
枚舉顏色只是在另一個頭文件中聲明的枚舉
enum color
{
red,
green,
blue
};
您的Slots
void redSlot(Widget w);
void greenSlot(Widget w);
void blueSlot(Widget w);
都采用Widget
類型的參數。 嘗試在調用時創建對象的副本。 您的Widget
是QGLWidget
的子類,它具有私有副本構造函數,因此無法從子類對象中調用。
當您想更改現有對象而不是其副本的顏色時,應更改函數以獲取該對象的指針:
void redSlot(Widget*);
void greenSlot(Widget*);
void blueSlot(Widget*);
void MainWindow::redSlot(Widget* w)
{
w->setColor(red);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.