Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ QGraphicsScene и Release

Автор: gmurik2 13.12.2010, 11:07

Добрый день!

Столкнулся с проблемой, при компиляции в режиме Release сцена в QGraphicsView отображается некорректно, вместо кнопок на белом фоне, отображается кусок белого фона. А в Debug режиме все нормально работает. Кто знает в чем может быть проблема?

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

    QTextCodec *codec = QTextCodec::codecForName("CP1251");
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForLocale(codec);

    menu = new MainMenu(this);
    
    ui->graphicsView->setScene(menu);
    ui->graphicsView->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
    ui->graphicsView->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
    ui->graphicsView->installEventFilter(this);
}

#include <QGraphicsScene>
#include <QGraphicsProxyWidget>
#include <QPushButton>


class MainMenu : public QGraphicsScene
{
    Q_OBJECT
public:
    explicit MainMenu(QObject *parent = 0);


signals:
  


public slots:
    

private:
    QGraphicsProxyWidget *proxy;
    QPushButton *propertyButton;
    QPushButton *helpButton;
    QPushButton *quitButton;
};

MainMenu::MainMenu(QObject *parent) :
    QGraphicsScene(parent)
{

    propertyButton = new QPushButton(tr("Настройки"), 0);
    helpButton = new QPushButton(tr("Помощь"), 0);
    quitButton = new QPushButton(tr("Выход"), 0);
    proxy = addWidget(propertyButton);
    QTransform  transform = proxy->transform();
    transform.translate(0. ,-30.);
    proxy->setTransform(transform);
    proxy = addWidget(helpButton);
    proxy = addWidget(quitButton);
    transform = proxy->transform();
    transform.translate(0. ,30.);
    proxy->setTransform(transform);

}


Автор: Rocky 13.12.2010, 12:33

У меня работает. Единственно, я заменил

ui->graphicsView->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));

на
ui.graphicsView->setViewport(new QWidget());

т.к. у меня не установлен opengl.. А так все работает, и в релизе и в дебаге. кьют 4.7.1

Автор: gmurik2 13.12.2010, 13:48

Вопрос снимается, видимо какая-то ошибка компиляции(gcc 4.5), удаление исполняемого файла и повторная компиляция решили проблему. Спасибо за участие!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)