Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt驱动器下拉列表仅限U盘_C++_Qt_Drop Down Menu_Usb - Fatal编程技术网

C++ Qt驱动器下拉列表仅限U盘

C++ Qt驱动器下拉列表仅限U盘,c++,qt,drop-down-menu,usb,C++,Qt,Drop Down Menu,Usb,我想要一个下拉列表,其中显示磁盘,但仅显示U盘 我使用QtStorageInfo,我已经看到所有连接的磁盘,但我只想显示U盘 这是我的密码: app.cpp: ... app::app(QWidget *parent) : QWidget(parent), ui(new Ui::app) { ui->setupUi(this); ... connect(ui->pushButton

我想要一个下拉列表,其中显示磁盘,但仅显示U盘

我使用QtStorageInfo,我已经看到所有连接的磁盘,但我只想显示U盘

这是我的密码:

app.cpp:

...
        app::app(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::app)
    {
        ui->setupUi(this);
        ...
        connect(ui->pushButton_9, &QPushButton::clicked, this, &app::refresh);
        connect(ui->comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &app::update);
        refresh();
        update();
    }

    app::~app()
    {
        delete ui;
    }

void app::refresh()
{
    ui->comboBox->clear();

    for (auto volume : QStorageInfo::mountedVolumes()) {
        ui->comboBox->addItem(volume.rootPath() + " " + volume.name() + " [" + QString::number(volume.bytesAvailable() / 1073741824) + tr(" GiB]"), QVariant(volume.rootPath()));
        }
    }
...

提前感谢。

您不能在Qt中直接执行此操作

但是,您可以使用Qt的函数QStorageInfo::device()来获取设备名称,例如“/dev/sdb1”。使用该名称,您可以添加特定于操作系统的代码,以获取有关该设备的更多信息

作为旁注:你要求显示“只有U盘”的措辞很糟糕。要求使用可移动存储器更有意义。这还包括外部USB硬盘以及SD卡

...
    class app : public QWidget
    {
        Q_OBJECT

    public:
        explicit app(QWidget *parent = 0);
        ~app();
        void refresh();
        void update();
...