//////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// #include "QSFMLCanvas.hpp" #include #include #include #include //////////////////////////////////////////////////////////// /// Custom SFML canvas //////////////////////////////////////////////////////////// class MyCanvas : public QSFMLCanvas { public : //////////////////////////////////////////////////////////// /// Construct the canvas /// //////////////////////////////////////////////////////////// MyCanvas(QWidget* parent = NULL) : QSFMLCanvas(QSize(100, 100), 0, parent) { } private : //////////////////////////////////////////////////////////// /// /see QSFMLCanvas::OnInit /// //////////////////////////////////////////////////////////// virtual void OnInit() { // Load the image myImage.LoadFromFile("datas/qt/sfml.png"); // Setup the sprite mySprite.SetImage(myImage); mySprite.SetOrigin(mySprite.GetSize() / 2.f); } //////////////////////////////////////////////////////////// /// /see QSFMLCanvas::OnUpdate /// //////////////////////////////////////////////////////////// virtual void OnUpdate() { sf::Event event; while (GetEvent(event)) { // Stick the sprite to the mouse cursor if (event.Type == sf::Event::MouseMoved) { mySprite.SetPosition(ConvertCoords(event.MouseMove.X, event.MouseMove.Y)); } // Adjust the size of the default view when the widget is resized if (event.Type == sf::Event::Resized) { GetDefaultView().Reset(sf::FloatRect(0, 0, event.Size.Width, event.Size.Height)); } } // Rotate the sprite mySprite.Rotate(GetFrameTime() * 100.f); // Clear the view Clear(sf::Color(0, 128, 0)); // Draw it Draw(mySprite); } //////////////////////////////////////////////////////////// /// Member data //////////////////////////////////////////////////////////// sf::Image myImage; ///< Some image to show sf::Sprite mySprite; ///< A sprite to display the image }; //////////////////////////////////////////////////////////// /// Entry point of application /// /// \return Application exit code /// //////////////////////////////////////////////////////////// int main(int argc, char **argv) { QApplication application(argc, argv); // Create the main frame QFrame* mainFrame = new QFrame; mainFrame->setWindowTitle("Qt SFML"); mainFrame->resize(400, 400); mainFrame->show(); // Create a label for showing some text QLabel* label = new QLabel("This is a SFML window\nembedded into a Qt frame :", mainFrame); label->setFont(QFont("courier new", 14, 1, false)); // Create a SFML view inside the main frame MyCanvas* SFMLView = new MyCanvas(mainFrame); // Create the main layout QVBoxLayout* layout = new QVBoxLayout; layout->addWidget(label, 0); layout->addWidget(SFMLView, 1); mainFrame->setLayout(layout); return application.exec(); }