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