QFileSystemWatcher problem



  • Hi all,

    I am using a QFileSystemWatcher to keep an eye on a Picture on RAM disk.
    When the picture is replace by another, which mean it is "modified".
    and i would like to emit a signal and get the image to display on a QLabel.

    It works when i use QTimer to replace the QFileSystemWatcher.

    It seems QFileSystemWatcher is not emitting any signal.

    my code ask following:

    @Dialog::Dialog(QWidget parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
    {
    ui->setupUi(this);
    /
    timer = new QTimer(this);
    timer->start(100);*/

    QFileSystemWatcher watcher;
    watcher.addPath("/mnt/rd/frame.jpg");
    hsvSaveConnect();
    checkBox();
    connect(ui->save,SIGNAL(clicked()),this,SLOT(saveValueToSD()));
    connect(ui->load,SIGNAL(clicked()),this,SLOT(loadInitValue()));
    connect(&watcher,SIGNAL(fileChanged(const QString &)),this,SLOT(loadImage()));
    connect(&watcher,SIGNAL(directoryChanged(const QString &)),this,SLOT(loadImage()));
    qDebug() << watcher.files() << watcher.directories();
    

    }

    void Dialog::loadImage()

    {

    qDebug() << "img loaded";
    
    
    QPixmap original("/mnt/rd/frame.jpg");
    
    
    if(original.isNull())
    
    
    {
    
        qDebug()<<"Failed to load image.";
    
    
    }
    
    ui->original->setPixmap(original);
    

    }@



  • It may be because you are using the QFileSystemWatcher as local variable inside the constructor. Try changing the same to

    QFileSystemWatcher *watch = new QFileSystemWatcher

    It should work.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.