我有一个QTableView
和一堆用于编辑,添加和删除功能的按钮。如下所示 -
如果选择了Table中的多个项目,我希望禁用“添加”和“编辑”按钮。如果选择了单个项目,则应启用它。我知道可以通过以下代码检测多个项目选择:
TableView->selectionModel()->selectedRows();
。但是如果选择了超过1行,如何禁用按钮。
答案 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 );