是String或是Number函数

时间:2017-01-11 16:51:05

标签: qt

我实际上是在处理个人" 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++;
        }
    }
}

非常感谢你的帮助。

1 个答案:

答案 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);