Название: Отловить щелчок левой кнопки мыши по форме Отправлено: merke от Декабрь 13, 2009, 12:03 Всем привет!
Подскажите, пожалуйста, как работать с QEvent, мне нужно отловить нажатие левой кнопки мыши на форме. Делаю что то на подобии контексного меню как в браузере в адресной строке. При нажатии на форме чтобы оно скрывалось. Пожалуйста, приведи полный пример! Буду очень благодарен! С уважением, Александр! Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: spectre71 от Декабрь 13, 2009, 12:15 Всем привет! Подскажите, пожалуйста, как работать с QEvent, мне нужно отловить нажатие левой кнопки мыши на форме. Делаю что то на подобии контексного меню как в браузере в адресной строке. При нажатии на форме чтобы оно скрывалось. Пожалуйста, приведи полный пример! Буду очень благодарен! С уважением, Александр! Для вызова контекстного меню лучше использовать: virtual void QWidget::contextMenuEvent ( QContextMenuEvent * event ) === Код
Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: merke от Декабрь 13, 2009, 12:17 У меня контекстное меню реализовано в виде QListWidget.
Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: BRE от Декабрь 13, 2009, 12:20 У меня контекстное меню реализовано в виде QListWidget. Какая разница, тебе же нужно само событие, говорящее о необходимости открыть контекстное меню.Вот contextMenuEvent как раз и вызывается при этом. А что ты будешь там отображать дело твое. Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: spectre71 от Декабрь 13, 2009, 12:23 У меня контекстное меню реализовано в виде QListWidget. Тогда клади его например на диалог с флагом Qt::Popup Код
И примерно так вызывай Код
Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: merke от Декабрь 13, 2009, 12:25 спасибо!
Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: spectre71 от Декабрь 13, 2009, 12:30 Малость обшибся :)
Не так: MyDialogObject->move(e->pos()); А вот так: MyDialogObject->move(mapToGlobal(e->pos())); Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: merke от Декабрь 13, 2009, 12:31 Мне бы вообще теперь хотелось бы понять как работать с QEvent, например у меня есть Ui форма на ней компоненты какие либо, например lineEdit. Вот как мне отлавливать нажатие той же самой клавиши по данному виджету?
Я писал вот так: Код: void lineEdit::event(QEvent *ev) Но тут ошибка C:/dev/Kursovaya/mainwindow.cpp:368: error: `lineEdit' has not been declared Пишу тогда ui->lineEdit::event И тоже ошибка. Подскажите, плиз, как тут обратится к виджету который находится на ui форме? Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: spectre71 от Декабрь 13, 2009, 12:34 И тоже ошибка. Подскажите, плиз, как тут обратится к виджету который находится на ui форме? Повесить на него фильтр событий. Смотри: virtual bool QObject::eventFilter ( QObject * watched, QEvent * event ) Там даже пример есть Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: lit-uriy от Декабрь 13, 2009, 12:50 >>void lineEdit::event(QEvent *ev)
А ты где-то объявил класс lineEdit? >>Пишу тогда ui->lineEdit::event Такая запись в Си++, вообще ничего не значит. Название: Re: Отловить щелчок левой кнопки мыши по форме Отправлено: merke от Декабрь 13, 2009, 13:02 В общем задачу решил следующим образом.
В заголовочном файле моего класса прописал защищённую функцию Код: protected: В конструкторе класса прописал Код: ui->centralWidget->installEventFilter(this); И далее прописал как в примере: Код: bool MainWindow::eventFilter(QObject *obj, QEvent *event) И всё заработало!!! Всем огромное спасибо за помощь! |