【发布时间】:2013-11-30 17:04:41
【问题描述】:
在我的应用程序中,我使用 QTableView 显示图像列表,然后通过单击鼠标左键并按下控制键盘按钮来选择一些图像,应用程序看起来如下图所示:@987654321 @
但是当我尝试使用应用程序上的其他按钮(如 “Destination”)然后尝试选择目标文件夹时,应用程序如下所示:
当我单击“选择文件夹”按钮并尝试选择文件夹时出现问题。发生的情况是单击文件夹选择选项卡,触发 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 小部件。
【问题讨论】:
标签: c++ qt qtableview