首页 > 解决方案 > 无法访问或更新具有分段错误的类成员

问题描述

我一直在使用以下代码收到分段错误错误。

头文件在下面

#include <QSortFilterProxyModel>
#include <QDateTime>

class TransactionFilterProxy : public QSortFilterProxyModel
{
    Q_OBJECT

public:
    explicit TransactionFilterProxy(QObject *parent = 0);


    static const QDateTime MIN_DATE;

    static const QDateTime MAX_DATE;

    void setDateRange(const QDateTime &from, const QDateTime &to);

protected:
    bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const;

private:

    QDateTime dateFrom;
    QDateTime dateTo;
};

CPP文件在下面

#include "transactionfilterproxy.h"
#include "transactiontablemodel.h"
#include <QDateTime>
#include <cstdlib>

const QDateTime TransactionFilterProxy::MIN_DATE = QDateTime::fromTime_t(0);

const QDateTime TransactionFilterProxy::MAX_DATE = QDateTime::fromTime_t(0xFFFFFFFF);

TransactionFilterProxy::TransactionFilterProxy(QObject *parent) :
    QSortFilterProxyModel(parent),
    dateFrom(MIN_DATE),
    dateTo(MAX_DATE)
{

}

bool TransactionFilterProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{


    QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);

    int type = index.data(TransactionTableModel::TypeRole).toInt();
    QDateTime datetime = index.data(TransactionTableModel::DateRole).toDateTime();

    if( datetime < dateFrom || datetime > dateTo)  //crashes here
        return false;

    return true;
}

void TransactionFilterProxy::setDateRange(const QDateTime &from, const QDateTime &to)
{
    this->dateFrom = from; //crashes here
    this->dateTo = to;
    invalidateFilter();
}

访问 QDateTime类成员dateFrom时应用程序崩溃 。尝试使用 QTcreator 运行调试模式,它显示 SIGSEGV 错误。任何建议都会很棒。

标签: c++qtc++11segmentation-fault

解决方案


推荐阅读