我实际上是在处理个人" Excel"为了学校。
当我的单元格的值是一个数字(int)时,我想在我的listNumber(QList int)中添加它。当我的单元格的值是一个String时,我想将它添加到我的listString。
然后这两个列表允许我排序。
问题在于:
QString test = text(i, j);
test.toInt(&ok);
if (ok == true) {
listNumber.append(test.toInt());
qSort(listNumber.begin(), listNumber.end());
}
错误 ASSERT failure in QList<T>::at: "index out of range" .
我认为这是因为它想要&#34;插入&#34;整数列表中的字符串。
这里我的功能&#34;排序&#34;
QList<QString> listString;
QList<int> listNumber;
bool ok;
QTableWidgetSelectionRange range = selectedRange();
for (int j = range.leftColumn(); j <= range.rightColumn(); ++j) {
for (int i = range.topRow(); i <= range.bottomRow(); ++i) {
QString test = text(i, j);
test.toInt(&ok);
if (ok == true) {
listNumber.append(test.toInt());
qSort(listNumber.begin(), listNumber.end());
}
}
}
if (listNumber.count() == 0) {
QMessageBox test;
test.setText("liste vide");
test.exec();
}
else {
int x = 0;
for (int j = range.leftColumn(); j <= range.rightColumn(); ++j) {
for (int i = range.topRow(); i <= range.bottomRow(); ++i) {
Spreadsheet::setFormula(i, j, QString::number(listNumber.at(x)));
x++;
}
}
}
非常感谢你的帮助。
答案 0 :(得分:0)
首先,不推荐使用Qt中的qSort,建议不要使用它:
QT_DEPRECATED_X("Use std::sort") inline void qSort(...
您可以改为使用std::sort
:
#include <algorithm>
//...
std::sort(listNumber.begin(), listNumber.end(), std::less<int>());
//or simply:
std::sort(listNumber.begin(), listNumber.end()); // using default comparison (operator <)
(但你也可以简单地调用弃用的qSort:)
qSort(listNumber);