2013-07-16 2 views
0

Я пытаюсь вызвать некоторую функцию (или слот), когда мышь покидает пространство моего QListView (tableView). Обычно вы можете использовать функцию leaveEvent(). Так, например, я мог бы написатьКак использовать leaveEvent с listView, созданным из формы QtCreator?

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

Это работает по назначению. Когда мышь покидает виджет MainWindow, приложение завершает работу. Однако, что, если я хочу выйти из приложения, когда мышь покидает мой объект QListView, который является INSIDE моего MainWindow виджета?

Как переопределить функцию для этого QListView, когда она была создана в дизайнере Qt Creator?

Вот что у меня есть (безуспешно) пытался:

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

И ниже, я попытался с помощью leaveEvent() в качестве сигнала, и он говорит leaveEvent неопределен (вы даже можете использовать события, как SIGNAL с?)

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

в принципе, я пытаюсь вызвать некоторую функцию, когда мышь покидает свой tableView, который был создан с дизайнером формы Qt Творца. Класс QListView, похоже, имеет mouseEntered()SIGNAL, но не mouseLeave()SIGNAL.

ответ

2

Подкласс QListView и переопределение leaveEvent (пример):

class MyListView : public QListView 
{ 
    Q_OBJECT 

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