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

时间:2016-05-27 04:02:44

标签: c++ qt qtableview

我有一个QTableView和一堆用于编辑,添加和删除功能的按钮。如下所示 - enter image description here

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

2 个答案:

答案 0 :(得分:2)

您可以将插槽连接到void selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)的信号QItemSelectionModel(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 );
    }
}

答案 1 :(得分:0)

当您检测到多项选择时,请尝试以下操作:

button->setEnabled( false );