Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - lirvine

Pages: [1]
1
Graphique / Re : QFileDialog ou autre dans la boucle event SFML
« le: Juin 02, 2014, 10:19:23 am »
Ok, je pense avoir compris
Je vais faire quelques essais.

Merci beaucoup

2
Graphique / Re : QFileDialog ou autre dans la boucle event SFML
« le: Mai 31, 2014, 03:15:14 pm »
Vous voulez parler de QSFML je pense.
Je l'ai essayé mais j'ai un doute, quand on choisit de l'utiliser on utilise plus du tout les événements SFML c'est bien ça ?
Si par exemple j'ai 20 Sprites sur lesquels je veut les événements souris sur chacun, le principe est de construire 20 widgets qui encapsuleront chacun le code SFML d'un Sprite et je me servirais de chaque Widgets indépendamment pour gérer les événements.
Mais je suis pas sur.

3
Graphique / Re : QFileDialog ou autre dans la boucle event SFML
« le: Mai 31, 2014, 02:21:27 pm »
Bonjour,

je n'est pas mis tous le code, j'ai déjà une application QT et une fenêtre QT, sinon ça compilerais pas et la fenêtre QFileDialog::getOpenFileName ne fonctionnerais pas de temps en temps je pense.
Je pense que je ne comprend pas la boucle event de QT.

Je pense que la fenetre QFileDialog::getOpenFileName s'ouvre et attend un event QT qu'il ne vois jamais a cause de la boucle while de SFML mais je ne comprend pas pourquoi certaine fois ça fonctionne.

Une chose intéressante est que les events SFML fonctionne quand la fenêtre QFileDialog::getOpenFileName est figé, je peut appuyé sur le bouton "echap" ce qui permet de revenir à l'affichage normal en fonctionnement normal mais sans sortir de l'application.

Je met le code entier.


mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFileDialog>

#include <SFML/Graphics.hpp>
#include <iostream>


namespace Ui
        {
        class MainWindow;
        }

class MainWindow : public QMainWindow
        {
        Q_OBJECT

        public:
                explicit MainWindow(QWidget *parent = 0);
                ~MainWindow();

        private:
                Ui::MainWindow *ui;
        };

#endif // MAINWINDOW_H


mainwindow.h
#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
        {
        // Creation d'une fenêtre plein écran avec le  mode vidéo du bureau
        sf::VideoMode DesktopMode = sf::VideoMode::getDesktopMode();

        //je creer la fenetre de l'application
    sf::RenderWindow window(DesktopMode, "fenetre test", sf::Style::None, sf::ContextSettings(32));
    window.setVerticalSyncEnabled(true);

    sf::Texture texture;
    sf::Sprite sprite;

    if (!texture.loadFromFile("c:\\test.png"))
        {
        std::cout << "Error loading file !" << std::endl;
        }

    sprite.setTexture(texture);


    std::cout << "Start" << std::endl;


        // la boucle principale
        bool running = true;

        while (running)
                {
        // évènements
                sf::Event event;
                while (window.pollEvent(event))
            {
                        //touche echape ou fermeture fenetre
                        if ((event.type == sf::Event::Closed) || ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)))
                                {
                // on stoppe le programme
                running = false;
                                }


            //si click gauche
            if ((event.type == sf::Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
                                {
                //je verifie si la souris est sur le sprite
                if((sprite.getPosition().x  <  event.mouseButton.x) && (event.mouseButton.x  < (sprite.getPosition().x + sprite.getGlobalBounds().width))&&
                   (sprite.getPosition().y  <  event.mouseButton.y) && (event.mouseButton.y  < (sprite.getPosition().y + sprite.getGlobalBounds().height)))
                    {
                    QString fileName = QFileDialog::getOpenFileName(0,"Open File",QString(),"BMP File(*.BMP)");

                    std::cout << "chouette" << std::endl;
                    }

                                }
                        }


        window.clear(sf::Color::Black);

        window.draw(sprite);

                window.display();
                }

        }

MainWindow::~MainWindow()
        {
        //delete ui;
        }

main.cpp
#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
        {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
   
    return a.exec();
        }

merci

4
Graphique / QFileDialog ou autre dans la boucle event SFML
« le: Mai 30, 2014, 03:12:47 pm »
Bonjour à tous,
J'ai développé un projet en c# il y a quelque temps que j'adapte en c++, pour des problèmes de performance.
J'ai décidé d'utilisé SFML qui est très intuitive je trouve, et d'utilisé QT pour le Gui.
j’avançais pas mal jusqu'au moment ou j'ai voulut faire une première utilisation de QT pour imprimé et récupérer le chemin de fichier. (Je ne maitrise pas trop QT)
mon problème est que une fenêtre QFileDialog::getOpenFileName par exemple fige aléatoirement.

        // la boucle principale
        bool running = true;

        while (running)
                {
        // évènements
                sf::Event event;
                while (window.pollEvent(event))
            {
                        //touche echape ou fermeture fenetre
                        if ((event.type == sf::Event::Closed) || ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape)))
                                {
                // on stoppe le programme
                running = false;
                                }


                        //si click gauche
                        if ((event.type == sf::Event::MouseButtonPressed) && (event.mouseButton.button == sf::Mouse::Left))
                                {
                //je verifie si la souris est sur le sprite
                if((sprite.getPosition().x  <  event.mouseButton.x) && (event.mouseButton.x  < (sprite.getPosition().x + sprite.getGlobalBounds().width))&&
                   (sprite.getPosition().y  <  event.mouseButton.y) && (event.mouseButton.y  < (sprite.getPosition().y + sprite.getGlobalBounds().height)))
                    {
                    QString fileName = QFileDialog::getOpenFileName(0,"Open File",QString(),"BMP File(*.BMP)");

                    std::cout << "chouette" << std::endl;
                    }


                                }

                        }


        window.clear(sf::Color::Black);

        window.draw(sprite);

                window.display();
                }

        }

Je pense que c'est un problème de event mais je suis même pas sur.
merci

Pages: [1]