• 10184阅读
  • 9回复

QFileSystemWatcher中的fileChanged信号不起作用? [复制链接]

上一主题 下一主题
离线zeki709
 

只看楼主 倒序阅读 楼主  发表于: 2007-04-03
— 本帖被 XChinux 执行加亮操作(2008-07-19) —
Qt 4.2中QFileSystemWatcher类可以监视目录和文件变化情况,编了个程序分别连接了directoryChanged和fileChanged信号。结果directoryChanged信号有用,但fileChanged总是没有发出,这是怎么回事呢?
[ 此贴被XChinux在2008-07-19 21:22重新编辑 ]
离线hehui

只看该作者 1楼 发表于: 2007-04-16
应该是你的程序问题!
没有用过,但是见过这样的程序!
离线aaniao999

只看该作者 2楼 发表于: 2007-04-20
顶,找到新的类了,哈哈,爽,前9被朋友欺负,用C#写这样的程序,说是什么什么COM还是什么“技术”写的,我最讨厌技术这2个字了,代这2个子的词基本就不知道到底是个什么东西,很神秘的样子
离线zeki709

只看该作者 3楼 发表于: 2007-04-20
我的程序如下,有错吗?我不觉得
#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();
    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);
}
离线eecw
只看该作者 4楼 发表于: 2008-10-21
碰到了同样的问题
离线lxbin2003

只看该作者 5楼 发表于: 2008-10-21
void TextEdit::startWatch()
{
    if(this->fileName.isEmpty())
    {
        //QMessageBox::information(this,"","nullfile");
        return;
    }
    stopWatch();   
    watcher=new QFileSystemWatcher(this);
    QFileInfo info(this->fileName);
    watcher->addPath(info.path());
    watcher->addPath(fileName);
    //QMessageBox::information(this,"",fileName);
   
    connect(watcher,SIGNAL(fileChanged ( const QString &)),this,SLOT(fileChanged ( const QString &)));
}
离线chaoscxm
只看该作者 6楼 发表于: 2008-10-21
文件名称和存在与否改变会触发该信号,而文件内部的内容改变则不会。可能和windows文件处理机制有关,更改外部信息和内部信息触发的系统消息不一样。不知道linux和mac下面是否一样
帖子签名(将在每个帖子下方显示)
离线water_wf

只看该作者 7楼 发表于: 2008-10-21
The fileChanged() signal is emitted when a file has been modified or removed from disk. Similarly, the directoryChanged() signal is emitted when a directory or its contents is modified or removed. Note that QFileSystemWatcher stops monitoring files and directories once they have been removed from disk.
这不是说修改也会触发吗
离线chaoscxm
只看该作者 8楼 发表于: 2008-10-21
所以需要分析bug原因
帖子签名(将在每个帖子下方显示)
离线shaoxie1986

只看该作者 9楼 发表于: 2012-07-27
我也遇到了同样的问题。。。。
快速回复
限100 字节
 
上一个 下一个