crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QGLWidget и вывод дочерних виджетов.
Рюк
  опции профиля:
сообщение 14.8.2012, 19:55
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 14.8.2012
Пользователь №: 3484

Спасибо сказали: 0 раз(а)




Репутация:   0  


на виджете наследнике QGLWidget дети не выводятся нормально, на месте ребенка(кнопки или лейбла) какая-то фигня.
Что делать, или может есть еще способы вывода других виджетов в теле наследника QGLWIdget?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 15.8.2012, 12:48
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Код покажи...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Рюк
  опции профиля:
сообщение 15.8.2012, 16:58
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 14.8.2012
Пользователь №: 3484

Спасибо сказали: 0 раз(а)




Репутация:   0  


Эту проблему уже решил путем испоьзования QGraphicsView и QGraphicsScene. Теперь возникла проблема другого рода. невозможно отдельно проинициализировать контекст и вывод(Я OpenGL сцену в бэкграунде вывожу). При этом получается дикие тормоза

#include "Actor.h"
#include <QtGui>
#include <GL/glu.h>
#include <QGLWidget>
class OpenGLScene : public QGraphicsScene{
    Player *P;
    Body G;
    PolyMesh SD;
    QPushButton *l;
public:
    OpenGLScene(){
        l=new QPushButton("HATE!");
        addWidget(l);
        g=0;
    }
    void drawBackground(QPainter *painter, const QRectF &){
        if (painter->paintEngine()->type() != QPaintEngine::OpenGL && painter->paintEngine()->type() != QPaintEngine::OpenGL2){
            qWarning("OpenGLScene: drawBackground needs a QGLWidget to be set as viewport on the graphics view");
            return;
        }
        painter->beginNativePainting();
//это в инициализацию зафигарить хочу
        SD.Create("/P.ply","/P.ply","/img.jpg");
        G.AddPart(SD);
        glClearColor(0.0, 0.5, 1.0, 0.0);
        glShadeModel(GL_SMOOTH);
        glEnable(GL_LINE_SMOOTH);
        glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
        glEnable(GL_LIGHTING);
        glEnable(GL_LIGHT0);
        glEnable(GL_DEPTH_TEST);
        static GLfloat lightPosition[4] = {5, 5, 5, 1.0};
        glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
        G.Init();
//это в вывод
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(65.0f,16.0/9.0F,0.1f,200.0f);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        gluLookAt(0,0,10,0,0,0,0,1,0);
        G.View();
        glDisable(GL_DEPTH_TEST);
        QTimer::singleShot(200, this, SLOT(update()));
    }
};
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 20:06