QSFMLCanvas не работает на Qt5.4 SFML2.2

Моя цель — иметь возможность использовать джойстик внутри Qt (чтобы добавить задачу пилотирования в существующее приложение Qt)
Примечание: Qt 5.4 // SFML 2.2 (работает на CentOS7)

Для этого я использовал учебник на веб-сайте sfml, объясняющий, как вставить окно sfml внутри виджета Qt. Это учебник ( http://www.sfml-dev.org/tutorials/1.6/graphics-qt.php слишком стар, мне пришлось кое-что изменить, чтобы обновить его для sfml 2.2.

Однако все работает не так, как задумано, и пока он компилируется, кажется, что он не может создать окно sfml из winid и в итоге вылетает

Вот часть кода, соответствующая созданию окна:

void QSFMLCanvas::showEvent(QShowEvent*)
{
if (!myInitialized)
{
std::cout << "Bla" << std::endl;
// Under X11, we need to flush the commands sent to the server to ensure that
// SFML will get an updated view of the windows
#ifdef Q_WS_X11
XFlush(QX11Info::display());
#endif

std::cout << "Blabla" << std::endl;

// Create the SFML window with the widget handle
sf::WindowHandle HANDLE;
HANDLE = static_cast<sf::WindowHandle>(winId());
std::cout << HANDLE << std::endl;
std::cout << "Blablabla" << std::endl;
sf::RenderWindow::create(HANDLE);
std::cout << "Blablablabla" << std::endl;

// Let the derived class do its specific stuff
OnInit();

// Setup the timer to trigger a refresh at specified framerate
connect(&myTimer, SIGNAL(timeout()), this, SLOT(repaint()));
myTimer.start();
myInitialized = true;
}
}

А вот и вывод

Bla
Blabla
35651593
Blablabla

…и падение

Как вы видите, у него нет проблем с получением дескриптора окна, но он не может создать из него окно визуализации sfml.
Обратите внимание, что для дескриптора есть static_cast, которого нет в руководстве. Различные вопросы предлагали поставить reinterpret_cast, но тогда это дает мне эту ошибку

QSFMLCanvas.cpp: In member function ‘virtual void QSFMLCanvas::showEvent(QShowEvent*)’:
QSFMLCanvas.cpp:48:60: erreur: invalid cast from type ‘WId {aka long long unsigned int}’ to type ‘sf::WindowHandle {aka long unsigned int}’
HANDLE = reinterpret_cast<sf::WindowHandle>(winId());

Есть ли способ решить эту проблему? Или просто SFML & Qt обречен больше никогда не работать вместе?
Спасибо за помощь

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]