使用 Qt GUI 从所有可用的串口中选择

Selecting from all available serial ports using Qt GUI

我找不到我的问题的最终答案,所以我决定 post 在这个网站上提出我的第一个问题。我对编程还很陌生,现在已经使用 Qt 几个月了。 我的代码通过串行端口与微控制器通信,但可用端口因个人电脑而异。我正在显示代码可用的端口数;

qDebug() << "Number of serial ports:" << QSerialPortInfo::availablePorts().count(); 

我的问题是:如何显示所有可用端口的名称,例如 "COM 10, 17. 22, etc",然后在我的 GUI 中显示它们。我最终希望做的是有一个可以动态填充可用端口的组合框,我现在有一个在几个端口之间切换的组合框,但这些是对应于特定计算机的固定端口。

尝试这样的事情:

#include <QApplication>
#include <QWindow>
#include <QSerialPortInfo>
#include <QComboBox>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    w.resize(200,200);
    w.show();

    QComboBox box(&w);
    Q_FOREACH(QSerialPortInfo port, QSerialPortInfo::availablePorts()) {
        box.addItem(port.portName());
    }
    box.move(100 - box.width() / 2,100 - box.height() / 2);
    box.show();

    return a.exec();
}

该代码非常不言自明。

在qt中心找到相关答案,示例代码;

foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts())
    {
    ui->comboBox->addItem(serialPortInfo.portName());
    }