qtablewidget selectedItems给出空列表

时间:2014-07-20 14:50:03

标签: qt

我有一个qtablewidget,其中一列包含一个小部件,另一些包含数据。将显示唯一包含窗口小部件的列,并隐藏所有其他列。

foreach (BillHeader *billHeader, billHeaderList)
{
    m_pBillTable->insertRow(i);

    itemWidget = new LookupItem;
    itemWidget->setImage(1);
    ...
    m_pBillTable->setCellWidget(i, 0, itemWidget);

    tableItem = new QTableWidgetItem(billHeader->billNumber);
    tableItem->setTextAlignment(Qt::AlignCenter);
    m_pBillTable->setItem(i, 1, tableItem);
    ...

    m_pBillTable->hideColumn(1);
    ...

我有一个如下连接的信号槽:

connect(m_pOkButton, SIGNAL(clicked()), this, SLOT(handleOkClick()));

当单击确定按钮时,我尝试获取所选项目并从设置的小部件中获取数据

void OrderLookup::handleOkClick()
{
qDebug()<<Q_FUNC_INFO<<"Invoked";

QList<QTableWidgetItem*> itemList = m_pBillTable->selectedItems();
qDebug()<<Q_FUNC_INFO<<itemList.count();
if (!itemList.isEmpty())
{
    int row = itemList.at(0)->row();
    qDebug()<<Q_FUNC_INFO<<row;
    LookupItem *item = (LookupItem*)m_pBillTable->cellWidget(row, 0);

    if (NULL != item)
    {
        QString billNumber = item->getBillNumber();
        emit orderLookupComplete(billNumber);
        accept();
    }
}

qDebug()<<Q_FUNC_INFO<<"Exits";
}

但我的列表计数为零。

该行已被选中并突出显示。 我已经将一些属性设置为表格小部件,如下所示:

m_pBillTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_pBillTable->setSelectionBehavior(QAbstractItemView::SelectRows);
m_pBillTable->setSelectionMode(QAbstractItemView::SingleSelection);
m_pBillTable->setFocusPolicy(Qt::NoFocus);

有人可以帮我理解列表计数为空的原因..

1 个答案:

答案 0 :(得分:1)

问题解决了..

QItemSelectionModel *itemModel = m_pBillTable->selectionModel();
QModelIndexList indexList = itemModel->selectedRows();
qDebug()<<Q_FUNC_INFO<<"IndexList Count"<<indexList.count();

if (!indexList.isEmpty())
{
    int row = indexList.at(0).row();