Znam się trochę na OpenGl i tak samo słabo na Qt. Dlatego mam do was małe pytanie.
Otóż mam widget opengl w okienku Qt i wszystko dobrze działa. Natomiast nie mam pojęcia jak połączyć z sobą glwidget(widget OGL`a) i jakiś inny(np. Button).
Kod o którym mowa:
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;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
glwidget.h
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QGLWidget>
#include <QTimer>
class GLWidget : public QGLWidget
{
public:
explicit GLWidget(QWidget *parent );
void initializeGL();
void paintGL();
void resizeGL(int w, int h);
private:
int xy2;
QTimer tim;
public slots:
};
#endif // GLWIDGET_H
glwidget.cpp
#include "glwidget.h"
#include <GL/glut.h>
GLWidget::GLWidget(QWidget * parent) : QGLWidget(parent)
{
connect(&tim,SIGNAL(timeout()),this,SLOT(updateGL()));
tim.start(16);
}
void GLWidget::initializeGL()
{
glClearColor(0 , 0 , 0 , 0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
}
void GLWidget::paintGL()
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable( GL_SCISSOR_TEST );
glScissor(-5,-5,900,5000);
glColor3f( 0, 0.5, 0.0 );
glRotatef(0.8,1,1,0);
glViewport(150,-50 ,600,600);
glutSolidTeapot(0.5);
glMatrixMode(GL_PROJECTION);
//gluLookAt(0,0,3 ,0,0,0, 0,1,0);
}
void GLWidget::resizeGL(int w, int h)
{
//glViewport(0,0,w,h);
/*glLoadIdentity();
gluPerspective(45,(float)w/h,2,10);
gluLookAt(0,0,3 ,0,0,0, 0,1,0);*/
}
void GLWidget::Alert()
{
this->hide();
}
void GLWidget::Alert2()
{
}
I 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();
w.setFixedSize(w.size());
return a.exec();
}
Chciałbym aby byle jaka wartość z MainWindow została przekazana do glwidget. Próbowałem to zrobić na chyba wszystkie moje sposoby, lecz żaden nie działa. Dlatego zwracam się do Was z prośbą o wskazanie mi jak to zrobić.
Z góry dziękuje za pomoc.
PS. Podobne pytanie zamieściłem również na innym forum, za co z góry przepraszam, ale niestety tam nie doczekałem się odpowiedzi.