【发布时间】:2012-11-02 02:10:59
【问题描述】:
我正在开发一个需要打开 USB 串行端口的 Linux 桌面应用程序,通常是 /dev/ttyUSB0 或 /dev/ttyUSB1。我正在使用 QFileDialog 让用户选择文件:
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setFilter(QDir::System | QDir::AllEntries | QDir::Hidden);
dialog.setViewMode(QFileDialog::Detail);
QStringList fileNames;
if (dialog.exec())
fileNames = dialog.selectedFiles();
当我将 FileDialog 指向 /dev 时,我可以通过键入“ls /dev -al”看到的所有文件都不存在。目录显示,但例如,此文件不显示:
$ ls -al /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 2011-10-09 10:47 /dev/ttyS0
我的用户是拨出组的成员:
$ groups
luke adm dialout cdrom audio video plugdev users fuse netdev bluetooth lpadmin admin sambashare
我已经尝试添加 QDir::Readable 和 QDir::Writable 并且上面的文件仍然没有出现。我做错了什么?
【问题讨论】:
-
如果您阅读我的帖子,您会发现我已经将 QDir:System 作为 setFilter() 的参数。还有其他地方应该使用吗?
-
不确定这是否会有所帮助,但从一些谷歌搜索来看,似乎建议使用库 qextserialport 来处理 Qt 应用程序中的串行端口。
-
@n.m. QDir::DefaultFilter 未定义。
-
@ClareMacrae 我看到了,我将不得不更仔细地研究它。 qt 开发者论坛没有回复,所以我倾向于认为这是某种错误。我在这里提交了一个错误报告:bugreports.qt.nokia.com/browse/QTBUG-21970
-
QDir::DefaultFilter 应该定义为(-1),如果不是,就使用-1。
标签: linux qt4 tty qfiledialog