Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何添加';双击';QTableWidget中整行的事件?_C++_Qt_Signals_Signals Slots_Slot - Fatal编程技术网

C++ 如何添加';双击';QTableWidget中整行的事件?

C++ 如何添加';双击';QTableWidget中整行的事件?,c++,qt,signals,signals-slots,slot,C++,Qt,Signals,Signals Slots,Slot,我想在QTableWidget的每一行中添加一个“双击”事件。我该怎么做 以下函数向QTableWidget添加1行: void ViewController::addReceivedFileToTable(QString sopInstanceUID, QString sopClassUID, QString fileName) { m_mainWindow.getReceivedFilesTableWidget()->insertRow(0); m_mainWindow

我想在QTableWidget的每一行中添加一个“双击”事件。我该怎么做

以下函数向QTableWidget添加1行:

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], ....)

您需要连接到QAbstractItemView基类中可用的双击信号:

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

onTableItemDoubleClicked的实现必须使用QTableWidget::itemFromIndex在QModelIndex和QTreeWidgetItem之间进行转换。

新的signals slots语法的代码是什么?您能给我一个例子吗?Qt如何知道哪一行连接到信号?新语法应该是:connect(m_mainWindow.GetReceivedFileTableWidget(),&QAbstractItemView::doubleClicked,this,&ViewController::onDoubleClicked);将为双击的任何行调用插槽。在实现插槽时,必须通过检查插槽的pass参数来查看双击了哪一行。可以使用QTableWidgetItem::row()或QModelIndex::row()获取该项目的行。