• 4855阅读
  • 2回复

QFileSystemWatcher的问题 [复制链接]

上一主题 下一主题
离线guhao
 

只看楼主 倒序阅读 楼主  发表于: 2010-02-27
QFileSystemWatcher类可以监视目录和文件变化情况,编了个程序分别连接了directoryChanged和fileChanged信号。结果directoryChanged信号有用,但是改变其中的一个文件,发现发射信号好几次,fileChanged只能成功一次,后面再更改文件内容,就不发射信号了,不知道有没达人知道怎么回事啊?

离线guhao

只看该作者 1楼 发表于: 2010-02-27
#include "Msg.h"

Msg::Msg()
{
    QFont font;
    font.setPointSize(24);
    setFont(font);
    QStringList args = qApp->arguments();
    QString path;
    if (args.count() > 1)
        path = args[1];
    else
        //path = QDir::currentPath();
        path = "./11.txt";
    label = new QLabel();
    label->setText(tr("监视的目录:") + path);
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(label);
    setLayout(layout);

    fsWatcher.addPath(path);
    //connect(&fsWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(directoryChanged(QString)));
    connect(&fsWatcher, SIGNAL(fileChanged(QString)), this, SLOT(fileChanged(QString)));
}

void Msg::directoryChanged(QString path)
{
    QMessageBox::information(NULL, tr("目录有变化"), path);
}

void Msg::fileChanged(QString path)
{
        
    QMessageBox::information(NULL, tr("文件有变化"), path);
}

这个论坛没有高手啊?
离线guhao

只看该作者 2楼 发表于: 2010-02-27
#ifndef MSG_H
#define MSG_H

#include <QtCore>
#include <QtGui>

class Msg : public QWidget
{
    Q_OBJECT

public:
    Msg();

public slots:
    void directoryChanged(QString path);
    void fileChanged(QString path);

private:
    QLabel* label;
    QFileSystemWatcher fsWatcher;
};
#endif
快速回复
限100 字节
 
上一个 下一个