gpt4 book ai didi

c++ - 如何禁用 QTableView 的 control+A 快捷方式并防止全选选项?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:10 25 4
gpt4 key购买 nike

我想阻止 control+A 快捷方式选择 QTableView 中的所有文件,我想让它只能用鼠标选择而不是键盘快捷键。现在我的 eventFilter 代码如下。你能建议我一个方法吗?

bool MainWindow::eventFilter(QObject* obj, QEvent *ev)
{
if(ev->type() == QEvent::MouseButtonPress)
{
if(obj == ui->listOfImages->viewport())
{
QMouseEvent * mouseEv = static_cast<QMouseEvent*>(ev);
if((mouseEv->buttons() & Qt::LeftButton) && (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true))
{
controlButtonCounter++;
fetch = true;
return QObject::eventFilter(obj,ev);
}
else if((mouseEv->buttons() & Qt::LeftButton) && (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == false))
{
if(selectedImages.size()>0)
{
ui->listOfImages->clearSelection();
selectedImages.clear();
selectedList.clear();
ui->selectedFiles->clear();
ui->selectedFiles->show();
}
fetch = false;
controlButtonCounter = 0;
}
}
}
return QObject::eventFilter(obj,ev);
}

最佳答案

我会尝试使用以下代码块扩展您的事件过滤器代码:

[..]
if (event->type() == QEvent::KeyPress && obj == ui->listOfImages->viewport()) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);

int key = keyEvent->key();
Qt::KeyboardModifiers modifiers = keyEvent->modifiers();
if(modifiers & Qt::ShiftModifier)
key += Qt::SHIFT;
if(modifiers & Qt::ControlModifier)
key += Qt::CTRL;
if(modifiers & Qt::AltModifier)
key += Qt::ALT;
if(modifiers & Qt::MetaModifier)
key += Qt::META;

if (QKeySequence(key) == QKeySequence(QKeySequence::SelectAll)) {
// Filter the event.
return true;
}
}
[..]

如果按下标准的“全选”组合键,此代码应该返回 true(过滤事件)。一般是Ctrl+A键。

关于c++ - 如何禁用 QTableView 的 control+A 快捷方式并防止全选选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20747045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com