在 QTableView 中选择多个项目时如何禁用按钮

How to disable a button when multiple items are selected in QTableView

我有一个 QTableView 和一堆用于编辑、添加和删除功能的按钮。如下图所示——

如果选择了 Table 中的多个项目,我希望禁用“添加”和“编辑”按钮。如果选择了单个项目,则应启用它。我知道可以通过以下代码检测到多项选择: TableView->selectionModel()->selectedRows();。但是如果选择了超过 1 行,如何禁用按钮。

当您检测到多项选择时,试试这个:

button->setEnabled( false );

您可以将插槽连接到 QItemSelectionModel 的信号 void selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)(qt 文档:http://doc.qt.io/qt-5/qitemselectionmodel.html#selectionChanged),您可以将其确定为 TableView->selectionModel()。像这样:

void slotSelectionChanged(const QItemSelection & selected,
                          const QItemSelection & deselected)
{
    Q_UNUSED(deselected);
    QModelIndexList indexies = selected.indexes();
    QVector<int> rows;
    foreach(const QModelIndex& index, indexies)
    {
        int row = index.row();
        if(!rows.contains(row))
        {
            rows.append(row);
        }

        if(rows.count() > 1)
            break;
    }

    if(rows.count() > 1)
    {
        //set button enabled false
        button->setEnabled( false );
    }
    else
    {
        //set button enabled true
        button->setEnabled( true );
    }
}