枚举用Qt投射到qint32

Enum cast to a qint32 with Qt

本文关键字:qint32 Qt 枚举      更新时间:2023-10-16

我不明白来自 Qt 小部件示例(终端示例)的强制转换 ( static_cast),在设置对话框的 updateSettings() 函数中.cpp :

currentSettings.baudRate = static_cast<QSerialPort::BaudRate>(
                ui->baudRateBox->itemData(ui->baudRateBox->currentIndex()).toInt());

currentSettingsQSerialPort::BaudRate enum的地方,currentSettings.baudRateqint32

这个演员表的目的是什么,检查itemData().toInt()属于QSerialPort::BaudRate?当我尝试将itemData替换为不属于enumint时,不会返回任何错误。

静态强制转换不检查强制转换的有效性(请参阅static_cast可以在C++中引发异常吗? 这就是为什么当您尝试将 itemData 替换为与枚举不对应的 int 时不会返回任何错误的原因。

当波特率

存储为整数时,将波特率转换为枚举是没有意义的。 您可以删除强制转换并获得相同的结果。

在Qt中,.toInt()不会在qint32中自动解析。在某些系统中,int 不是 32 位,qint32 保证是 32 位。