Название: Qlabel и сигналы Отправлено: pahom от Сентября 04, 2007, 08:07 Доброе время суток.
Кто подскажет ответ на интересующий меня вопрос? А именно: "надо окрашивать label в другой цвет, при наведение курсора мыши. какое это событие (сигнал)?" В Ассаулте всего два сигнала void linkActivated ( const QString & link ) void linkHovered ( const QString & link )... ос: linux (openSuSE 10.2) Qt4.2.1 C уважением, Михаил. Название: Re: Qlabel и сигналы Отправлено: WW от Сентября 04, 2007, 10:08 Цитировать mouseTracking : bool This property holds whether mouse tracking is enabled for the widget. If mouse tracking is disabled (the default), the widget only receives mouse move events when at least one mouse button is pressed while the mouse is being moved. If mouse tracking is enabled, the widget receives mouse move events even if no buttons are pressed. Access functions: bool hasMouseTracking () const void setMouseTracking ( bool enable ) See also mouseMoveEvent(). Название: Re: Qlabel и сигналы Отправлено: QCasper от Сентября 04, 2007, 13:32 Если задача лишь покрасить лэйбл при наведении, то возможно более лучшим выходом из положения будет применение CSS. Qt 4.2 вроде как уже умеет.
Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 04, 2007, 13:40 и как сие заюзать? мне бы примерчик.
Название: Re: Qlabel и сигналы Отправлено: QCasper от Сентября 04, 2007, 14:34 http://doc.trolltech.com/4.3/stylesheet.html
Название: Re: Qlabel и сигналы Отправлено: Sergeich от Сентября 04, 2007, 16:11 QEvent::Enter - Mouse enters widget's boundaries.
QEvent::Leave - Mouse leaves widget's boundaries. Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 05, 2007, 05:07 Ребята, вы не поняли. Я немогу понять как связать стиль и лабел или к нему евент прикрутить. Пример можно? Или так и будете ссылки кидать с методами? Я ведь, прежде чем писать, это все смотрел.
Название: Re: Qlabel и сигналы Отправлено: QCasper от Сентября 05, 2007, 08:47 Я не пойму задача в чем заключается?
1. Сделать чтобы лэйбл меня цвет при наведении мыши. Любым способом. 2. Во что бы то ни стало прикрутить обработку события наведения мыши. Неважно для каких целей. 3. Сделать и то и другое? Какая из этих всех задач приоритетней. Если первая, то достаточно заюзать CSS как при оформлении HTML доков, что-то типа setStyle("QLabel:hovered {background:#FF3300}"). Подробнее см. ссылку. Название: Re: Qlabel и сигналы Отправлено: Sergeich от Сентября 05, 2007, 10:51 Код: class Filter : public QObject Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 05, 2007, 11:24 Код: class Filter : public QObject src/gsmbf2.cpp:43 error class 'QWidget' has no member named 'setPaletteBackgroundColor' Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 05, 2007, 11:28 Я не пойму задача в чем заключается?... Все просто. когда указатель мыши попадает на label он окрашивается в синий, уходит - label становится черным. Мне сугубо все равно через что там это делается через CCS или еще как-то. Мне нужен пример. Я бы его разобрал, расковырял и было бы счастье. С уважением.Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 05, 2007, 12:15 Код: class Filter : public QObject Название: Re: Qlabel и сигналы Отправлено: QCasper от Сентября 05, 2007, 13:04 Я не пойму задача в чем заключается?... Все просто. когда указатель мыши попадает на label он окрашивается в синий, уходит - label становится черным. Мне сугубо все равно через что там это делается через CCS или еще как-то. Мне нужен пример. Я бы его разобрал, расковырял и было бы счастье. С уважением.Подстава... оказывается из всех виджетов именно QLabel не поддерживает :hover. Только щас узнал об этом :-[ Ну, на будущее, если вдруг с другими виджетами захочется провернуть что-нить подобное, то не надо перегружать никакие эвенты, а просто сделать w.setStyleSheet(":hover{background:red}"); где w - объект любого стандартного виджета кроме QLabel. Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 05, 2007, 13:25 Цитировать Подстава... Спасибо, дорогой, что вовремя меня остановил. Я уже все волосы на голове повыдергивал. Хотел было за ствол хватануться, что бы монитор прострелить 8)) Будем придумывать что то другое.Название: Re: Qlabel и сигналы Отправлено: pastor от Сентября 05, 2007, 13:29 Цитировать заменил в коде строчки, как показано выше, компилится, однако, не работает. Установи для QLabel setAutoFillBackground(true) Название: Re: Qlabel и сигналы Отправлено: Sergeich от Сентября 05, 2007, 13:36 Код: #include <qlabel.h> Название: Re: Qlabel и сигналы Отправлено: pastor от Сентября 05, 2007, 13:46 Этот код без проблем работает на Qt 3.3.8, не думаю что с портированием на 4-ку должны быть проблемы. Все верно, но есть два момента: 1) setPaletteBackgroundColor - метод Qt3Support. Если Qt или прект собран без его поддержки, то этот метод ме будет найден. Заменяеться такой конструкцией: Код: QPalette palette; 2) Нужно естанавливать setAutoFillBackground(true) для виджета Код: ... Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 05, 2007, 14:15 Все верно... Да, работает. Спасибо большое. А если я хочу не backGround менять, а цвет шрифта, то как быть в этом случае?Название: Re: Qlabel и сигналы Отправлено: denka от Сентября 05, 2007, 14:25 Используй
Код: palette.setColor( QPalette::Foreground, цвет ); Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 06, 2007, 06:01 Используй w->foregroundRole()Код: palette.setColor( QPalette::Foreground, цвет ); Ребята, а как прикрутить еще и событие клика мыши? У меня получилось Код: bool Filter1::eventFilter( QObject* obj, QEvent* e ) Название: Re: Qlabel и сигналы Отправлено: denka от Сентября 06, 2007, 08:24 А че за класс? Че за ф-ция? Как вызываеш?
Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 06, 2007, 08:55 А че за класс? Че за ф-ция? Как вызываеш? Код: class Filter : public QObject С уважением. Название: Re: Qlabel и сигналы Отправлено: denka от Сентября 06, 2007, 09:34 А где создаеться экземпляр gsmbf2? Ты к нему ведь обращаешся в Filter::eventFilter напиши код который не работает...
Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 06, 2007, 09:50 А где создаеться экземпляр gsmbf2? Ты к нему ведь обращаешся в Filter::eventFilter напиши код который не работает... Код: gsmbf2::gsmbf2( QWidget * parent, Qt::WFlags f) Название: Re: Qlabel и сигналы Отправлено: denka от Сентября 06, 2007, 10:03 Если ты обращался к gsmbf2::activateDownload(); то тебе либо надо ф-цию activateDownload сделать статической,либо где-то создавать экземпляр класса gsmbf2 и через него уже вызывать эту ф-цию... На скока я понял проблема у тя именно в этом.
З.Ы. просто вызывать ф-цию test() как ты это сделал в примере нельзя! она являеться членом другого класса. С++ это ведь ООП программирования не так ли ;) Название: Re: Qlabel и сигналы Отправлено: pastor от Сентября 06, 2007, 10:50 2 pahom: Сначало стоит вам изучить азы С++, а потом уже браться за Qt! Не в обиду, но вы этих азов не знаете.
Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 06, 2007, 12:33 Вхреначил.
Код: gsmbf2* sm =new gsmbf2(); Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 06, 2007, 12:37 2 pahom: Сначало стоит вам изучить азы С++, а потом уже браться за Qt! Не в обиду, но вы этих азов не знаете. Даже если и так, что вовсе не так, я не имею права задать вопрос? Никаких обид. 8)Название: Re: Qlabel и сигналы Отправлено: denka от Сентября 06, 2007, 13:02 Не работает что именно? Вот этот код:
Код: gsmbf2* sm =new gsmbf2(); Название: Re: Qlabel и сигналы Отправлено: pahom от Сентября 06, 2007, 13:08 Этот код работает. В textEdit ничего не пишет... Обнаружил интересную штуку. Изменил функцию вот так.
Код: void gsmbf2::test() Шучу. 8) |