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

Selecting from all available serial ports using Qt GUI

本文关键字:串行端口 选择 行选 GUI Qt 使用      更新时间:2023-10-16

我找不到我的问题的决定性答案,所以我决定在这个网站上发布我的第一个问题。我对编程相当陌生,并且已经使用Qt几个月了。我的代码通过串行端口与微控制器通信,但是可用端口因PC而异。我正在显示代码中可用的端口数量;

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());
    }