Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [РЕШЕНО] opengl scene & qwidgets problem
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
padla
делаю все как в тут в итоге виджет отображается либо так:
Нажмите для просмотра прикрепленного файла
либо так:
Нажмите для просмотра прикрепленного файла
при чем отчего зависит не могу разобраться.
ViGOur
У тебя явно что-то с рисованием или перерисовкой виджетов, проверь еще раз все внимательно...
padla
да вроде все проверял. причем это проявляется хаотично. то есть запускаешь закрываешь приложение виджет отрисовывается либо так либо эдак.
ViGOur
Ну значит, выкладывай исходник, как я понимаю он небольшой... :)

оформи его в тег expand

исходник твоего приложения

тут исходник

padla
widget.h
Раскрывающийся текст
/*
*    controllTacticWindow.h
*/

#ifndef _CONTROLLTACTICWINDOW_H_
#define _CONTROLLTACTICWINDOW_H_
#include <QtGui>

namespace TacticalConditions {
    class ControlTacticalWindow : public QWidget {
        Q_OBJECT
        public:
            ControlTacticalWindow();

    };
}

#endif// _CONTROLLTACTICWINDOW_H_


widget.cpp
Раскрывающийся текст
/*
* controllTacticWindow.cpp
*/

#include "controltacticalwindow.h"

namespace TacticalConditions {
    ControlTacticalWindow::ControlTacticalWindow() : QWidget(0, Qt::CustomizeWindowHint | Qt::WindowTitleHint) {
        setWindowTitle(tr("Items (double click to flip)"));
        setWindowOpacity(0.8);

        QVBoxLayout *layout = new QVBoxLayout;
        setLayout(layout);
        QPushButton *button;

        button = new QPushButton(QIcon(QString::fromUtf8(":/images/images/up.png")), tr(""));
        layout->addWidget(button);

        button = new QPushButton(tr("Add circle"));
        layout->addWidget(button);

        button = new QPushButton(tr("Add square"));
        layout->addWidget(button);

        layout->addStretch(1);
    }
}


Так он (виджет) добавляется на опенгл сцену:
Раскрывающийся текст
    TacticalWindow::TacticalWindow(QWidget * parent) : QGraphicsView(parent) {
        setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
        setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
        OpenGLScene *scene = new OpenGLScene;
        setScene(scene);
        scene->addWidget(new ControlTacticalWindow());
               ......


Отрисовка заднего фона:
Раскрывающийся текст
    void OpenGLScene::drawBackground(QPainter *painter, const QRectF &) {
        if (painter->paintEngine()->type()
                != QPaintEngine::OpenGL) {
            qWarning("OpenGLScene: drawBackground needs a "
                     "QGLWidget to be set as viewport on the "
                     "graphics view");
            return;
        }
        glDrawPixels(m_image.width(), m_image.height(), GL_RGBA, GL_UNSIGNED_BYTE, m_image.bits());
    }
padla
Скомпилил этот пример запускаю и вижу тоже самое:
Нажмите для просмотра прикрепленного файла
Litkevich Yuriy
padla, а какая у тебя видео-карта, как-то троли говорили, что не все видеокарты нормально работают
padla
Видео карта NVIDIA GeForce 9400 GT.
qt 4.5.1.
Alt Linux 4.1.
Возможно все это из-за драйверов на видео.
На винде кстати работает без проблем.
padla
Так и есть проблема была в драйвере.
Litkevich Yuriy
padla, можно отметить [РЕШЕНО] ?
padla
да решено.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.