-1
から行を削除するときに私が持っている私のQMLファイルの中ComboBox
:発行コンボボックスモデル
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);
:システムで現在使用可能なシリアルポート名が含まれてい
import QtQuick 2.4
import QtQuick.Controls 2.0
// ...
ComboBox {
id: serailPortNameBox
model: availableSerialPortsModel
textRole: "display"
}
とモデルavailableSerialPortsModel
シリアルポートを削除するとき:
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
は、いくつかの視覚的な問題で、このポートを削除します。
はそれだけでバグOG ComboBox
ですか私が何か間違ったことをやっていますか?私のQtバージョンは、Sierra 10.12.2を搭載したアップルデバイスで5.7.0です。
Here問題を再現する簡単なプロジェクトです。
行を削除することを世界に知らせる必要があります。 http://doc.qt.io/qt-5/qabstractitemmodel.html#beginRemoveRowsおよびhttp://doc.qt.io/qt-5/qabstractitemmodel.html#endRemoveRows –
これはQt 5.7.0のバグですこれはQt 5.7.1で修正されました:https://bugreports.qt.io/browse/QTBUG-54573 - アップグレードを試してください。 – jpnurmi
@Jesper Juhl QStringListModelは完全なクラスであり、 'removeRow()'の実現はすでにこの関数を呼び出しています。 –