crossplatform.ru

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

История благодарностей участнику BRE ::: Спасибо сказали: 264 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
11.3.2009, 18:29 Qt 4.5.0, не запускается демка с OpenGL'ем
Цитата(Litkevich Yuriy @ 11.3.2009, 18:00) *
Сделал тест версий OpenGL.

...

Вывод в консоль, странный (после линии)

Это сработает после инициализации OpenGL.
void GLWidget::initializeGL()
{
    qglClearColor(trolltechPurple.dark());
    object = makeObject();
    glShadeModel(GL_FLAT);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);

    qDebug() << "Renderer   : " << (const char*)glGetString(GL_RENDERER) << endl;
    qDebug() << "Version     : " << (const char*)glGetString(GL_VERSION) << endl;
    qDebug() << "Vendor      : " << (const char *)glGetString(GL_VENDOR) << endl;
    qDebug() << "Extensions : " << (const char *)glGetString(GL_EXTENSIONS) << endl;
}

Это кусок из примера hellogl.

Функция определена так:
const GLubyte* glGetString( GLenum name )
поэтому нужно приведение типа к (const char*).
Litkevich Yuriy,
11.3.2009, 16:20 Qt 4.5.0, не запускается демка с OpenGL'ем
Цитата(Litkevich Yuriy @ 11.3.2009, 15:45) *
И как посмотреть текущую версию?

OpenGLVersionFlags QGLFormat::openGLVersionFlags () [static]

Более подробную информацию можно получить у самой openGL:
    cerr << "Renderer   : " << glGetString(GL_RENDERER) << endl;
    cerr << "Version     : " << glGetString(GL_VERSION) << endl;
    cerr << "Vendor      : " << glGetString(GL_VENDOR) << endl;
    cerr << "Extensions : " << glGetString(GL_EXTENSIONS) << endl;
Litkevich Yuriy,
8.3.2009, 15:39 Как лучше всего организовать предварительный просмотр при печати?
Цитата(Rocky @ 8.3.2009, 15:36) *
Как лучше это сделать? Есть ли стандартные фишки для оргранизации предпросмотра? Если нет, то какой лучше всего виджет использовать?

QPrintPreviewWidget
QPrintPreviewDialog
Rocky,
7.3.2009, 23:08 Дополнительный виджет
Цитата(++Norton++ @ 7.3.2009, 22:38) *
Да, хотел только еще один вопрос задать...
Когда нажимаю левой кнопкой мыши на график, программа прекращает свою работу (закрывается). Вроде бы так не должно быть?

Я так думаю, что она не просто закрывается, а падает.
Проверь у себя, в конструкторе GraphicWidget объект rubber конструируется?
Что-то типа rubber = new QRubberBand( this );
++Norton++,
6.3.2009, 14:47 Вставка изображения на QWidget
Цитата(kuler @ 6.3.2009, 14:44) *
c grab'ом чтото не получается не подскажите?
QPixmap pix(300, 300);
    pix.grabWidget(table);//, 0, 0, 200, 200);//пробовала и так и так
    m_Painter.begin(m_Pixmap);
    m_Painter.drawPixmap(0, 0, pix);
    m_Painter.end();

QPixmap pix = QPixmap::grabWidget( table );


Цитата
Warning: Do not call this function from QWidget::paintEvent().
kuler,
6.3.2009, 13:57 unsigned int в QListWidget
Цитата(++Norton++ @ 6.3.2009, 13:53) *
В том то и дело, что int в него помещать невозможно :( Пробовал как-нибудь преобразовать в String (типа buff[i].toString()) но компилятор ругается.
Каким способом можно преобразовать unsigned int в String?

QString::number(...)
++Norton++,
6.3.2009, 10:03 Реализация анализатора (парсера) формул времени выполнения
Цитата(BRE @ 6.3.2009, 9:29) *
Пример:

array2d.h
#ifndef __ARRAY2D
#define __ARRAY2D

#include <QObject>
#include <vector>

class Array2D : public QObject
{
        Q_OBJECT
public:
        Array2D( int dx, int dy );
                ~Array2D();

public Q_SLOTS:
        char    at( int i, int j ) const;
        void    set( int i, int j, char val );

        inline  int             dx() const { return m_dx; }
        inline  int             dy() const { return m_dy; }

private:
        int             m_dx;
        int             m_dy;
        std::vector< std::vector<char> > *m_data;
};

#endif


array2d.cpp
#include "array2d.h"

Array2D::Array2D( int dx, int dy )
        : m_dx( dx ), m_dy( dy )
{
        m_data = new std::vector< std::vector<char> >( m_dx );
        for( int i = 0; i < m_dx; ++i )
                (*m_data)[ i ] = std::vector<char>( m_dy );
}

Array2D::~Array2D()
{
                delete m_data;
}

char Array2D::at( int i, int j ) const
{
        Q_ASSERT( i > 0 && i < m_dx );
        Q_ASSERT( j > 0 && j < m_dy );
        return (*m_data)[ i ][ j ];
}

void Array2D::set( int i, int j, char val )
{
        Q_ASSERT( i > 0 && i < m_dx );
        Q_ASSERT( j > 0 && j < m_dy );
        (*m_data)[ i ][ j ] = val;
}


main.cpp
#include <QApplication>         
#include <QScriptEngine>        
#include <QDebug>
#include "array2d.h"

const int arrDx = 5;
const int arrDy = 5;

void dump( const Array2D &arr )
{
        for( int i = 0; i < arr.dx(); ++i )
                for( int j = 0; j < arr.dy(); ++j )
                        qDebug( "item [%i, %i] = %i", i, j, arr.at( i, j ) );
}

int main( int argc, char *argv[] )
{
        QApplication app( argc, argv );

        Array2D arr( arrDx, arrDy );

        for( int i = 0; i < arr.dx(); ++i )
                for( int j = 0; j < arr.dy(); ++j )
                        arr.set( i, j, i + j );

        dump( arr );

        QScriptEngine se;
        se.globalObject().setProperty( "arr", se.newQObject( &arr ) );

        QScriptValue fun = se.evaluate( "function( i, j ) { print( i, j ); return arr.at( i, j ); }" );
        QScriptValueList args;
        args << QScriptValue( &se, 1 ) << QScriptValue( &se, 4 );
        QScriptValue y = fun.call( QScriptValue(), args );
        qDebug() << y.toNumber();

        return 0;
}


Высокой скорости вычисления от скриптов ожидать не стоит (от нативной она будет сильно отличаться).
AD,

11 страниц V  « < 9 10 11
RSS Текстовая версия Сейчас: 1.12.2020, 2:26