2

Qt は私にとって初めてなので、まだすべてのイディオムを知っているわけではありません。として公開するカスタム Linux ドライバーがあり/dev/mydeviceます。ハードウェアで興味深いことが起こると、ドライバーはそのファイルにデータを書き込みます。私はこれが動作することをテストしました

xxd -l 16 /dev/mydevice

ボタンを押すと、データが画面にダンプされるのを見ることができます。

ここで、何がダンプされているかを示す単純な GUI が必要です。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 = app


SOURCES += main.cpp
4

0 に答える 0