Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用MouseDoubleClick事件实现QListView_Qt_Qlistview - Fatal编程技术网

Qt 使用MouseDoubleClick事件实现QListView

Qt 使用MouseDoubleClick事件实现QListView,qt,qlistview,Qt,Qlistview,我打算实现一个QListView,当我在每个代理上双击鼠标按钮时,它将显示一个帧。以我最基本的编程技巧,我做不到。下面是我的代码: void MainWindow::eventFilter(QObject *obj, QEvent *event) { if (obj == ui->listView->viewport() && event->type() == QEvent::MouseButtonDblClick) { int row = getLi

我打算实现一个QListView,当我在每个代理上双击鼠标按钮时,它将显示一个帧。以我最基本的编程技巧,我做不到。下面是我的代码:

void MainWindow::eventFilter(QObject *obj, QEvent *event)
{

if (obj == ui->listView->viewport() && event->type() == QEvent::MouseButtonDblClick)
{
    int row = getListViewRow();
    qDebug() << "Double Clicked on Row: " << row << endl;
    mFrame->setGeometry(700,500,150,150);
    mFrame->show();  }}

所以请纠正我以实现目标。谢谢。

解决方案非常简单:如果安装事件筛选器,则需要将其安装到要筛选的事件的对象上:

ui->listView->viewport()->installEventFilter(this);

谢谢@Felix!如果我没有弄错,那么你的意思是我也必须把这一行添加到构造函数中。但我有以下错误。错误:C2555:“MainWindow::eventFilter”:重写虚拟函数返回类型与“QObject::eventFilter”不同且不协变您的事件筛选器必须返回bool,无论它是否实际过滤了事件:
bool MainWindow::eventFilter(QObject*obj,QEvent*event)
。如果返回true,Qt将停止处理事件。非常感谢@Felix!它起作用了。现在我要更新代码。为了更好地理解QEvent,您能给我推荐一些可以阅读的文档吗?
ui->listView->viewport()->installEventFilter(this);