2016-01-02 5 views
1

Я хочу добавить событие 'on double clicked' в каждую строку в моем QTableWidget. Как я могу это сделать?Как добавить событие «с двойным щелчком» к целой строке в QTableWidget?

Следующая функция добавляет 1 строку в 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)); 
} 

мне нужно что-то вроде:

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

ответ

1

Вам нужно подключить к сигналу, который двойной клик можно найти в базе QAbstractItemView класс:

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

Ваша реализация onTableItemDoubleClicked будет иметь для преобразования между QModelIndex и QTreeWidgetItem с помощью QTableWidget :: itemFromIndex.

+0

Что будет с этим кодом с новым синтаксисом сигналов-слотов? – Engo

+0

Не могли бы вы привести мне пример? Как Qt знает, какая строка связана с сигналом? – Engo

+1

Новый синтаксис должен быть: connect (m_mainWindow.getReceivedFilesTableWidget(), & QAbstractItemView :: doubleClicked, this, & ViewController :: onDoubleClicked); – Brad