如何使用从QtCreator表单创建的listView使用leaveEvent?

时间:2013-07-16 02:32:56

标签: qt event-handling signals qt-creator slot

当鼠标离开QListViewtableView)的空格时,我正试图调用某个函数(或插槽)。通常,您可以使用leaveEvent()函数。例如,我可以写

void MainWindow::leaveEvent(QEvent * event){
    qApp->quit();
}

这是按预期工作的。当鼠标离开MainWindow小部件时,应用程序退出。但是,如果我想在鼠标离开我的QListView窗口小部件的MainWindow对象时退出应用程序该怎么办?

在Qt Creator的表单设计器中创建函数时,如何重新实现此QListView的函数?

以下是我所尝试的(未成功):

void Ui::tableView::leaveEvent(){
    qApp->quit();
}

下面,我尝试使用leaveEvent()作为信号,并且leaveEvent未定义(您甚至可以将事件用作SIGNAL s吗?)

connect(ui->tableView, SIGNAL(leaveEvent(QEvent *event)), this, SLOT(testSlot()));

基本上,当鼠标离开我使用Qt Creator的表单设计器创建的tableView时,我试图调用某个函数。 QListView课程似乎有mouseEntered() SIGNAL,但不是mouseLeave() SIGNAL

1 个答案:

答案 0 :(得分:2)

子类QListView并重新实现leaveEvent(示例):

class MyListView : public QListView
{
     Q_OBJECT

    void MyListView::leaveEvent(QEvent *e){
        QListView::leaveEvent(e);
        anyOtherAction();
    }
}