Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Qt] QGLWidget

Ostatnio zmodyfikowano 2012-06-03 20:08
Autor Wiadomość
ly000
Temat założony przez niniejszego użytkownika
[Qt] QGLWidget
» 2012-06-03 19:07:36
Witam ponownie,
tak jak napisałem wcześniej, mam problem z połączeniem dwóch klas MainWindow i glwdget.
Kod:
glwidget.h
#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>


class GLWidget : public QGLWidget
{
public:
    GLWidget(QWidget *parent );

    void initializeGL();
    void paintGL();
    void resizeGL(int w, int h);

private:
    int xy2;


};

#endif // GLWIDGET_H

glwidget.cpp
#include "glwidget.h"

#include <GL/glut.h>



GLWidget::GLWidget(QWidget * parent)
{


}

void GLWidget::initializeGL()
{
    glClearColor(0 , 0 , 0 , 0);
}

void GLWidget::paintGL()
{    glClear(GL_COLOR_BUFFER_BIT);

     glBegin( GL_POLYGON );
    glColor3f( 1.0, 0.0, 0.0 );

         glVertex3f( 0.0, 0.0, 0.0 );
         glVertex3f( 0.0, 1.0, 0.0 );
         glVertex3f( 1.0, 1.0, 0.0 );
         glVertex3f( 1.0, 0.0, 0.0 );
          glEnd();

           glViewport(-150,-150  ,300,300);
}

void GLWidget::resizeGL(int w, int h)
{

}
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>



namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
   
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    int xy;
   
private:
    Ui::MainWindow *ui;


public slots:
    void down();
    void up();


};

#endif // MAINWINDOW_H
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "glwidget.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(down()));
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(up()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::up()
{

}

void MainWindow::down()
{

}
Main

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <GL/glut.h>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
   
    return a.exec();
}
Chciałbym aby klasa glwidget pobierała wartość do zmiennej xy2 z klasy mainwindow z zmiennej xy. Próbowałem to jakoś zrobić dziedziczeniem itp. Ale coś mi nie idzie, bo w logu programu wywala błędy:
 
błąd:C2385: ambiguous access of 'setObjectName'could be the 'setObjectName' in base 'QObject'or could be the 'setObjectName' in base 'QObject'
O co chodzi?
Z góry dziękuje za pomoc!
P-57757
m4tx
» 2012-06-03 19:13:34
C/C++
GLWidget( QWidget * parent );
Możesz zmienić na:
C/C++
GLWidget( MainWindow * parent );
Wtedy będziesz się mógł odwołać do xy w ten sposób:
parent->xy;
 :)
P-57760
ly000
Temat założony przez niniejszego użytkownika
» 2012-06-03 20:08:59
Niestety pojawia się coś takiego:
błąd:C2664: 'GLWidget::GLWidget(MainWindow *)' : cannot convert parameter 1 from 'QWidget *' to 'MainWindow *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
P-57771
« 1 »
  Strona 1 z 1