从ComboBox模型

时间:2016-12-31 14:32:40

标签: qt qml qtquick2 qtquickcontrols2

我的QML文件中有ComboBox

import QtQuick 2.4
import QtQuick.Controls 2.0
// ...
ComboBox {
    id: serailPortNameBox
    model: availableSerialPortsModel
    textRole: "display"
}

和模型availableSerialPortsModel,其中包含系统中当前可用的串行端口名称:

QStringListModel availableSerialPortsModel;
QList<QSerialPortInfo> portsList = QSerialPortInfo::availablePorts();
for (auto port : portsList) {
    int row = availableSerialPortsModel.rowCount();
    availableSerialPortsModel.insertRow(row);
    QModelIndex index = availableSerialPortsModel.index(row);
    availableSerialPortsModel.setData(index, port.portName(), Qt::DisplayRole);
}
// ...
engine.rootContext()->setContextProperty("availableSerialPortsModel", availableSerialPortsModel);

combobox before removing

当我删除一些串口时:

for (int row = availableSerialPortsModel.rowCount() - 1; row >= 0; --row) {
    QModelIndex index = availableSerialPortsModel.index(row);
    QString name = availableSerialPortsModel.data(index, Qt::DisplayRole).toString();

    if (portsToRemove.contains(name)) {
        availableSerialPortsModel.removeRow(row);
    }
}

ComboBox删除此端口时遇到一些视觉问题: combobox after removing

这只是一个错误og ComboBox还是我做错了什么?在使用Sierra 10.12.2的Apple设备上,我的Qt版本是5.7.0。

Here一个简单的项目,可以重现这个问题。

1 个答案:

答案 0 :(得分:0)

这是Qt 5.7.0错误(bugreports.qt.io/browse/QTBUG-54573)。升级到Qt 5.7.1 id解决了这个问题。