В моем приложении я использую QTableView для отображения списка изображений, и я выбираю некоторые из изображений, щелкая левой кнопкой мыши и нажимая кнопку управления клавиатурой, когда я это делаю, поэтому приложение выглядит как указанное ниже изображение:
Но затем, когда я пытаюсь использовать другие кнопки в приложении, такие как "Назначение", а затем пытаюсь выбрать папку назначения, приложение выглядит следующим образом:
Проблема возникает, когда я нажимаю кнопку "выбрать папку" и пытаюсь выбрать папку. Что происходит, так это то, что щелчок на вкладке выбора папки запускает виджет 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.