Russian Qt Forum
Ноябрь 24, 2024, 15:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QLineEdit  (Прочитано 11249 раз)
Григорий
Гость
« : Март 28, 2012, 11:12 »

 Уважаемые форумчане , подскажите как выкрутится , для редактирования однострочной строки используют виджет QlineEdit , а у него отсутсвует сигнал clicked(), чем его можно заменить или какой аналог найти виджету чтобы он срабатывал на клик мыши?
Записан
sudo
Гость
« Ответ #1 : Март 28, 2012, 11:18 »

Отловить событие mouseEvent
Записан
Григорий
Гость
« Ответ #2 : Март 28, 2012, 11:24 »

Отловить событие mouseEvent

а можно намек на пример
Записан
sudo
Гость
« Ответ #3 : Март 28, 2012, 11:30 »

Код
C++ (Qt)
void Object::someMethod()
{
 ...
 lineEdit->installEventFilter(this);
 ...
}
 
 
bool Object::eventFilter(QObject* obj, QEvent* event)
{
 if (obj == lineEdit && event->type() == QEvent::MouseButtonPress)
   doSmth();
}
 
 
Записан
Alex_C
Гость
« Ответ #4 : Март 28, 2012, 15:19 »

а можно намек на пример

Книга Марк Шлее "Qt.Программирование на C++".
Глава 15 "Фильтры событий".
Книга есть в инете. Очень советую!
Там кстати в примере как раз QLineEdit+MouseFilter - то, что Вам надо!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Март 28, 2012, 15:24 »

А не проще перегрузить QLineEdit?

Код
C++ (Qt)
class LineEdit : public QLineEdit
{
       Q_OBJECT
public:
    LineEdit( QWidget* parent = 0 ) : QLineEdit( parent ) {}
 
Q_SIGNALS:
       void clicked();
 
protected:
      void mousePressEvent( QMouseEvent* e )
      {
           QLineEdit::mousePressEvent( e );
           emit clicked();
      }
};
 
Записан

Qt 5.11/4.8.7 (X11/Win)
sudo
Гость
« Ответ #6 : Март 28, 2012, 15:31 »

Неа. Плодишь ещё один класс и кода больше Улыбающийся И таскать его придётся за собой
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Март 28, 2012, 15:43 »

Неа. Плодишь ещё один класс и кода больше Улыбающийся И таскать его придётся за собой
А eventFilter() таскать не нужно что-ли? Имхо, eventFilter() это хак.
Записан

Qt 5.11/4.8.7 (X11/Win)
Alex_C
Гость
« Ответ #8 : Март 28, 2012, 15:47 »

А что делать, если форма уже нарисована (или рисовать ее хочется) в QtDesigner?  Улыбающийся
Свои компоненты туда вставлять.
Кстати, почему это хак? На мой взгляд, хак - использование недокументированных методов. Тут же все легально!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Март 28, 2012, 15:49 »

А что делать, если форма уже нарисована (или рисовать ее хочется) в QtDesigner?  Улыбающийся
Свои компоненты туда вставлять.
Кстати, почему это хак? На мой взгляд, хак - использование недокументированных методов. Тут же все легально!
Есть promoteTo.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
sudo
Гость
« Ответ #10 : Март 28, 2012, 15:56 »

А eventFilter() таскать не нужно что-ли? Имхо, eventFilter() это хак.

Не вижу смысла писать что-то, что можно легко сделать стандартными средствами
« Последнее редактирование: Март 28, 2012, 15:58 от sudo » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Март 28, 2012, 16:00 »

Не вижу смысла писать что-то, что можно легко сделать стандартными средствами
С чего это eventFilter() стал стандартным средством?
К тому же он решает задачу только для одного конкретного виджета. А если их на форме с десяток?
« Последнее редактирование: Март 28, 2012, 16:03 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #12 : Март 28, 2012, 16:04 »

Кстати, почему это хак? На мой взгляд, хак - использование недокументированных методов. Тут же все легально!
Да, легальный, но хак)
Записан

Qt 5.11/4.8.7 (X11/Win)
sudo
Гость
« Ответ #13 : Март 28, 2012, 16:21 »

С чего это eventFilter() стал стандартным средством?
К тому же он решает задачу только для одного конкретного виджета. А если их на форме с десяток?

Если это есть public API Qt, то почему это не стандартное средство?
Да хоть миллион, всё зависит от задачи и трудоёмкости
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #14 : Март 28, 2012, 16:33 »

Я тоже за eventFilter)
Это более гибкое решение в данном случае)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.18 секунд. Запросов: 23.