Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么重叠比较总是在下面的示例中计算为真_C++_Qt - Fatal编程技术网

C++ 为什么重叠比较总是在下面的示例中计算为真

C++ 为什么重叠比较总是在下面的示例中计算为真,c++,qt,C++,Qt,我不明白为什么下面的代码有警告,说明重叠比较的结果总是正确的。Next语句永远不会执行 QVariant MainModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if ((role != Qt::DisplayRole) || (role != Qt::EditRole)) // always evaluates

我不明白为什么下面的代码有警告,说明重叠比较的结果总是正确的。Next语句永远不会执行

QVariant MainModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();
    if ((role != Qt::DisplayRole) || (role != Qt::EditRole)) // always evaluates to true warning, but why?
        return QVariant();
    if (index.column() == 0 && index.row() < m_values.count()) // this is never executed warning
        return m_values.at( index.row() );
    else
        return QVariant();
}
QVariant MainModel::data(常量QModelIndex&index,int角色)常量
{
如果(!index.isValid())
返回QVariant();
如果((角色!=Qt::DisplayRole)| |(角色!=Qt::EditRole))//总是计算为true warning,但为什么?
返回QVariant();
如果(index.column()==0&&index.row()
假设
QT::DisplayRole
QT::EditRole
具有不同的值(否则为什么要将两者进行比较?),那么让我们考虑一下


如果
角色
等于一个,则它必须不等于另一个。因此,这两个条件中有一个是正确的。因为这是一个OR,这意味着整个表达式都是真的


唯一不会发生这种情况的是
QT::DisplayRole==QT::EditRole
。您是否打算使用AND(
&&
)而不是OR?

假设
QT::DisplayRole
QT::EditRole
具有不同的值(否则为什么要将两者进行比较?)


如果
角色
等于一个,则它必须不等于另一个。因此,这两个条件中有一个是正确的。因为这是一个OR,这意味着整个表达式都是真的


唯一不会发生这种情况的是
QT::DisplayRole==QT::EditRole
。您是否打算使用AND(
&&
)而不是OR?

如果
角色
等于
Qt::DisplayRole
,则它不能同时等于
Qt::EditRole
,因此,这些条件中至少有一个是
true
true
或任何=
true
。如果
role
等于
Qt::DisplayRole
,则它不能同时等于
Qt::EditRole
(反之亦然),因此,这些条件中至少有一个是
true
true
或任何=
true