Topic: Discriminare l'oggetto indicato dalle coordinate QPoint?  (Letto 132 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Igor

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Mi trovo a dover gestire un click destro con un menu contestuale sopra un QTableWidget, e fin qui nessun problema.

    def right_click_menu(self, position):

        my_table = self.ui.tableWidget
        menu = QtWidgets.QMenu('right click', my_table)
        elimina_action = menu.addAction("Elimina")
        modifica_action = menu.addAction("Modifica")
        action = menu.exec_(my_table.mapToGlobal(position))
        row = my_table.itemAt(position).row()
        column = my_table.itemAt(position).column()
        if action == elimina_action:
            services_id = my_table.item(row, 0).text()
            my_table.itemChanged.disconnect(self.update_table)
            my_table.removeRow(row)
            delete_record(services_id)
            my_table.itemChanged.connect(self.update_table)
        if action == modifica_action:
            my_table.editItem(my_table.item(row, column))


Ora, quando il click destro avviene al di fuori dal QTableWidget ottengo un eccezione perchè, ovviamente, itemAt(position).row() è un membro solamente di un QTableWidget.
Potrei cavarmela gestendo l'eccesione con un try, ma vorrei fare qualcosa di più "elegante" discriminando in anticipo quale componente è indicato daQPoint "position" (che è una variabile QPoint).

Avete qualche idea?

Offline Igor

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:Discriminare l'oggetto indicato dalle coordinate QPoint?
« Risposta #1 il: Dicembre 28, 2019, 07:44 »
Parzialmente risolto con
if not my_table.itemAt(position) is None:

che mi pare più elegante di un try, ma comunque mi piacerebbe comunque sapere qualche è il componente indicato dalla coppia QPoint.