gpt4 book ai didi

c++ - 如何避免鼠标单击一个小部件触发 Qt 中其他小部件的信号?

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

在我的应用程序中,我使用 QTableView 来显示图像列表,我通过单击鼠标左键并在我这样做时按下控制键盘按钮来选择一些图像,应用程序看起来如下图所示:enter image description here

但是当我尝试使用应用程序上的其他按钮(如“目标”)然后尝试选择目标文件夹时,应用程序如下所示: enter image description here

当我单击“选择文件夹” 按钮并尝试选择文件夹时出现问题。发生的事情是单击文件夹选择选项卡,触发 QTableView 小部件,我在其中显示图像并取消选择所有选定的图像。我想避免它。我现在跟踪鼠标左键点击 QTableView 小部件的方式如下:

bool MainWindow::eventFilter(QObject* obj, QEvent *ev)
{
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();
}
fetch = false;
controlButtonCounter = 0;
}
}
return QObject::eventFilter(obj,ev);
}

这里 ui->listOfImages 是 QTableView 小部件。 controlButtonCounter 之类的其他东西与鼠标点击无关,我将其用于其他目的。

请告诉我当我按下与 QTableView 位于同一区域的其他内容时如何避免触发 QTableView 小部件。

最佳答案

if(obj = ui->listOfImages->viewport())

你不是在那里做比较,你是在给 obj 变量赋值。

应该是这样的:

if(obj == ui->listOfImages->viewport())

关于c++ - 如何避免鼠标单击一个小部件触发 Qt 中其他小部件的信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303057/

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