⚠️ Forum Maintenance: Feb 6th, 8am - 14pm (UTC+2)

Painting over a QVideoWidget

  • I'm trying to paint on a qvideowidget (drawing text now, maybe need something more complex later).

    However, when subclassing qvideowidget and overriding the paint event, the text is not painted. Is there another way to paint on top of a qvideowidget?

    This is the code I have so far:

    #include "videow.h"
    videoW::videoW(QString dir, QString listFile) {
        player = new QMediaPlayer(this);
        playlist = new QMediaPlaylist(player);
    void videoW::paintEvent(QPaintEvent *event){
        qDebug() << "Painting";
        QPainter p(this);
        p.drawText(QRect(200,0,1000,200), "Fwejaf;ljflawejf;wj wkjfklweajfl w");
    void videoW::play(){
        std::cout << "Start playing" << std::endl;
        std::cout << playlist->currentIndex();
    void videoW::updatePlayList(QString dir){
        QDir recoredDir(dir);
        QStringList filters{"*.mp4", "*.avi"};
        QStringList filesToDisp = recoredDir.entryList(filters);
        bool getNames = videoNames.isEmpty();
        for (int i = 0; i < filesToDisp.size(); ++i) {
            QString fileName = filesToDisp[i];
            if (isSupported(fileName) && ((!videoNames.isEmpty() && videoNames.contains(fileName)) || getNames)) {
                QMediaResource c(QUrl::fromLocalFile(dir + "/" +fileName));
                if (getNames){
        std::cout << "Loaded " << playlist->mediaCount() << " videos for display" << std::endl;
     * @brief videoDisplay::isSupported - check if a file can be played
     * @param name
     * @return
    bool videoW::isSupported(QString name) {
        if (name.indexOf(".avi") > -1 || name.indexOf(".mp4") > -1) {
            return true;
        return false;

  • Lifetime Qt Champion

    Does the video show ? as you dont seems to call base PaintEvent.
    Anyway, i was wondering.

    If you overlay say a QLabel. Does that work ?
    If not critical to actually draw yourself.

    also, this seems to work

  • I've tried with a label, but I was struggling with making it transparent. Will try the link you mentioned, thanks

  • Thanks @mrjj , your overlay tip got me looking for that term and I found https://stackoverflow.com/questions/19199863/draw-rectangular-overlay-on-qwidget-at-click

    Took the second answer, and its working.

  • Lifetime Qt Champion

    Good found. nice overlay class :)

Log in to reply