Overview | Phonon4Qt5

Phonon4Qt5, as the name suggests, is a version of the Phonon 4 library built against Qt5 rather than Qt4.

It has the same API as a Phonon built against Qt4, but differs in ABI and file names. This allows development and/or delpoyment of your application to happen against either version of Qt.


If you are building against a qt-project provided binary build of Qt5 you may have to define the CMAKE_PREFIX_PATH to make CMake find Qt5. If you are using QMake for your application you will additionally have to instruct cmake to install Qt extensions into the actual Qt directory using KDE_INSTALL_USE_QT_SYS_PATHS.

For example:

mkdir build5
cd build5

Phonon4Qt5 installation does not conflict with regular Phonon installations in any way; It uses different file and folder names for everything installed.


Except for a couple of lines in CMake, using Phonon4Qt5 is identical to using the (old) Qt4 Phonon.


To check for Phonon4Qt5 in your CMake project simply use find_package. Variables other than *_FOUND variable will have a generic PHONON prefix making it easier to support both versions without excessive if/else blocks.

find_package(Phonon4Qt5 REQUIRED)
find_package(Phonon REQUIRED)
# These are present regardless of which path was chosen
message("${PHONON_LIBRARY} contains the path to libphonon4qt5 or libphonon")
message("${PHONON_INCLUDE_DIR} contains the phonon4qt5 or phonon include directory")
While you were able to get away with not adding PHONON_INCLUDE_DIR to CMake's include_directories on various Unix systems, this will not work with Phonon4Qt5; It is using nested directories to achieve 100 % source compatibility with Phonon, so your compiler will not be able to find phonon/* includes by simply looking in standard paths.


To use Phonon4Qt5 in your QMake project you can simply use:

QT += phonon4qt5

QMake will take care of everything else. Except in certain situations QMake will not be able to find the files necessary to enable a phonon4qt5 build, building phono4qt5 with KDE_INSTALL_USE_QT_SYS_PATHS, as explained above, should prevent this from happening.


For the actual code there is absolutely no difference between Phonon and Phonon4Qt5.

Consequently the following code example will work with either version:

#include <QUrl>
#include <phonon/MediaSource>
int main()
QUrl url("file:///home/user/firefly.webm");
Phonon::MediaSource source(url);
if (!source.isValid())
return 1;
return 0;
Note that all constructors of this class are implicit, so that you can simply write.
Definition mediasource.h:63
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:20:24 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.