2016-05-27 4 views
0

QTableViewと、編集、追加、削除のためのボタンがあります。以下に示されます。 enter image description hereQTableViewで複数の項目が選択されているときにボタンを無効にする方法

テーブルの複数の項目が選択されている場合は、[追加]ボタンと[編集]ボタンを無効にします。単一の項目が選択されている場合は、有効にする必要があります。私は、複数の商品選択が次のコードで検出できることを知っています: ​​。しかし、複数の行が選択されている場合、ボタンを無効にする方法。あなたが複数の項目の選択を検出したときに

答えて

2

あなたはvoid selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)(QTドキュメント:http://doc.qt.io/qt-5/qitemselectionmodel.html#selectionChanged)信号に接続されたスロットにすることができQItemSelectionModelの、あなたは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); 
    } 
} 
+0

解決に感謝します。出来た... –

0

、これを試してみてください。

button->setEnabled(false); 
+0

ボタン> setEnabled(TableView-> selectionModel() - > selectedRows()。size()<= 1); //信号に接続されているスロットで呼び出されるQItemSelectionModel :: selectionChanged(const QItemSelection&selected、const QItemSelection&deselected) –

関連する問題