crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QGraphicsScene и Release
gmurik2
  опции профиля:
сообщение 13.12.2010, 11:07
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 21.5.2009
Пользователь №: 764

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




Репутация:   0  


Добрый день!

Столкнулся с проблемой, при компиляции в режиме 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
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

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




Репутация:   7  


У меня работает. Единственно, я заменил
ui->graphicsView->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));

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

т.к. у меня не установлен opengl.. А так все работает, и в релизе и в дебаге. кьют 4.7.1
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
gmurik2
  опции профиля:
сообщение 13.12.2010, 13:48
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 21.5.2009
Пользователь №: 764

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




Репутация:   0  


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

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


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




RSS Текстовая версия Сейчас: 15.11.2018, 9:32