Должен ли QFileSystemWatcher работать с узлами устройства?

Qt является новым для меня, поэтому я еще не знаю всех идиом. У меня есть пользовательский драйвер Linux, который выставляет себя как /dev/mydevice, Когда в оборудовании происходит что-то интересное, драйвер записывает некоторые данные в этот файл. Я проверил, что это работает с

xxd -l 16 /dev/mydevice

и могу видеть, что мои данные сбрасываются на экран, когда я нажимаю кнопку.

Теперь я хочу простой графический интерфейс, чтобы показать мне, что сбрасывается; QFileSystemWatcher кажется хорошим кандидатом, поскольку он «отслеживает изменения файлов в файловой системе», но не запускает fileChanged сигнал.

я догадываюсь QFileSystemWatcher просто смотрит на время модификации или что-то в этом роде? поскольку QFile не реализует readyRead сигнал, я до порождения новой темы и цикл на QFile::read()? Или реализовать свой собственный QIODevice что это делает? Как лучше всего достичь моей цели?

Вот игрушечный пример.

main.cpp:

#include <QCoreApplication>
#include <QDebug>
#include <QFileSystemWatcher>
#include <QString>

class EventTester : public QObject
{
Q_OBJECT
public:
EventTester(QObject *parent = 0) : QObject(parent)
{
qfsw = new QFileSystemWatcher(this);

if (!qfsw->addPath("/dev/mydevice")) {
qDebug() << "Couldn't add watcher.";
}
connect(qfsw, &QFileSystemWatcher::fileChanged,
this, &EventTester::onEvent);
}

QFileSystemWatcher *qfsw;

public slots:
void onEvent(const QString &path)
{
Q_UNUSED(path);
qDebug() << "We got a special event!";
}
};

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

EventTester e();

return a.exec();
}

qfswtestcon.pro:

QT       += core

QT       -= gui

TARGET = qfswtestcon
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = appSOURCES += main.cpp

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]