2016-01-02 1 views
1

Je souhaite ajouter un événement 'sur double clic' à chaque ligne de mon QTableWidget. Comment puis-je faire ceci?Comment ajouter un événement 'sur double cliqué' à une ligne entière dans un QTableWidget?

La fonction suivante ajoute 1 ligne à la QTableWidget:

void ViewController::addReceivedFileToTable(QString sopInstanceUID, QString sopClassUID, QString fileName) 
{ 
    m_mainWindow.getReceivedFilesTableWidget()->insertRow(0); 
    m_mainWindow.getReceivedFilesTableWidget()->setItem(0,0,new QTableWidgetItem(sopInstanceUID)); 
    m_mainWindow.getReceivedFilesTableWidget()->setItem(0,1,new QTableWidgetItem(sopClassUID)); 
    m_mainWindow.getReceivedFilesTableWidget()->setItem(0,2,new QTableWidgetItem(fileName)); 
} 

Je besoin de quelque chose comme:

connect(m_mainWindow.getReceivedFilesTableWidget()->[getRow]->[onDoubleClicked], ....) 

Répondre

1

Vous aurez besoin de se connecter au signal qui est disponible double-cliqué dans la base QAbstractItemView classe:

connect(m_mainWindow.getReceivedFilesTableWidget(), SIGNAL(doubleClicked(QModelIndex const&)), this, SLOT(onTableItemDoubleClicked(QModelIndex const&))); 

Votre implémentation de onTableItemDoubleClicked aura pour convertir entre QModelIndex et QTreeWidgetItem en utilisant QTableWidget :: itemFromIndex.

+0

Que serait ce code avec la nouvelle syntaxe signaux-slots? – Engo

+0

Pourriez-vous me donner un exemple? Comment Qt sait-il quelle ligne est connectée au signal? – Engo

+1

La nouvelle syntaxe doit être: connect (m_mainWindow.getReceivedFilesTableWidget(), & QAbstractItemView :: doubleClicked, this, & ViewController :: onDoubleClicked); – Brad