如何获取表视图的按键事件



这是我的树模型的DropMimeData代码。

代码按预期工作,用户可以将树项从表视图中的一个位置拖放到视图中的另一个位置。

我需要在基于 Cntrl 按键的 mimeData 函数中添加一个条件。

1(我如何知道是否在功能中按下了cntrl键。

bool TreeModel::dropMimeData(const QMimeData *mimeData, Qt::DropAction 
action, int row, int column, const QModelIndex &parent)
{   
if (!mimeData->hasFormat(s_treeNodeMimeType)) {
return false;
}
QByteArray data = mimeData->data(s_treeNodeMimeType);
QDataStream stream(&data, QIODevice::ReadOnly);
qint64 senderPid;
stream >> senderPid;
if (senderPid != QCoreApplication::applicationPid()) {
return false;
}
TreeItem *parentNode = getItem(parent);
int count;
stream >> count;
if (row == -1) {
if (parent.isValid())
row = 0;
else            
row = rowCount(parent);
}
for (int i = 0; i < count; ++i) {
qlonglong nodePtr;
stream >> nodePtr;
TreeItem *node = reinterpret_cast<TreeItem *>(nodePtr);
if (node->row() < row  && parentNode == node->parent())
--row;
TreeItem *nodeNew = new TreeItem(node->GetContainer(), parentNode);
nodeNew->setContainer(node->GetContainer());
parentNode->insertChild(row, nodeNew);
endInsertRows();
++row;
//  if( ctrl key is pressed ) while dragging and dropping item the Cntrl key is pressed
//  removeItem(node); 
}   
return true;

}

试试这个。

if (QGuiApplication::keyboardModifiers() != Qt::ControlModifier)
removeItem(node);

相关内容

  • 没有找到相关文章

最新更新