0

我已经设置了一个 QStandardItemModel 并使用来自另一个查询数据库的模型的数据填充它。该模型用于我向用户显示信息的表格视图中。第一列是“复选框”字段,用户可以选中或取消选中。下面是我用来设置“显示”模型的代码(我添加了注释以显示复选框的添加位置)

 for ( int row = 0; row < m_infoModel->rowCount(); ++row )
        {
            QStandardItem *item;
            item = new QStandardItem;
            // Sets up checkbox here
            item->setData( QVariant ( Qt::Unchecked ), Qt::CheckStateRole );
            Qt::ItemFlags flags = ( Qt::ItemIsUserCheckable | Qt::ItemIsEnabled );
            item->setFlags( flags );
            m_displayModel->setItem( row, 0, item );
            // Checkbox setup complete...
            // ... More data added here
            item = new QStandardItem;
            item->setText( m_infoModel->data( m_infoModel->index( row, 0 ) ).toString() );
            m_displayModel->setItem( row, 1, item );
            item = new QStandardItem;
            item->setText( m_infoModel->data( m_infoModel->index( row, 1 ) ).toString() );
            m_displayModel->setItem( row, 2, item );
            item = new QStandardItem;
            item->setText( m_infoModel->data( m_infoModel->index( row, 2 ) ).toString() );
            m_displayModel->setItem( row, 3, item );
        }

在用户交互之后,我遍历表中的每一行以检查哪些行已被检查,以便我可以使用相应的信息。

    if ( m_infoModel->rowCount() != 0 )
    {
QStringList stringListOfVars;
        for ( int i = 0; i < m_displayModel->rowCount(); ++i )
                {
                    if ( m_displayModel->item( i, 0 )->checkState() == Qt::Checked )
                    {              
                        QString var = m_displayModel->data( m_displayModel->index( i, 2 ) ).toString(); 

                        stringListOfVars.prepend( var );
                    }
                }
    }

我遇到的问题和疑问是,即使未选中复选框,也始终满足“if”条件。

4

0 回答 0