“QTableWidget::selectedItems”返回一个空列表

问题描述 投票:0回答:1

我有一个 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()));

单击 Ok 按钮时,我尝试获取所选项目并从设置为它的小部件中获取数据:

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->setSelectionBehavior(QAbstractItemView::SelectRows);
    m_pBillTable->setSelectionMode(QAbstractItemView::SingleSelection);
    m_pBillTable->setFocusPolicy(Qt::NoFocus);

为什么列表计数为空?

qt qtablewidget
1个回答
2
投票
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();
© www.soinside.com 2019 - 2024. All rights reserved.