#include <qlabel.h>#include <qapplication.h>class Filter : public QObject{public: Filter( QObject* parent = 0 ) : QObject(parent) {} bool eventFilter( QObject* obj, QEvent* e );};bool Filter::eventFilter( QObject* obj, QEvent* e ){ if ( !obj->isWidgetType() ) return false; QWidget* w = (QWidget*) obj; if ( e->type() == QEvent::Enter ) { w->setPaletteBackgroundColor( QColor(255, 255, 200) ); } else if ( e->type() == QEvent::Leave ) { w->setPaletteBackgroundColor( QColor(200, 200, 200) ); } return false;}int main( int argc, char** argv ) { QApplication app(argc, argv); QWidget* mw = new QWidget(); app.setMainWidget(mw); QLabel* label = new QLabel( "Bla-bla-bla", mw ); label->installEventFilter( new Filter(label) ); mw->show(); return app.exec();}
QPalette palette; palette.setColor(widget->backgroundRole(), color); widget->setPalette(palette);
...QLabel* label = new QLabel( "Bla-bla-bla", mw );label->setAutoFillBackground(true);label->installEventFilter( new Filter(label) );...
palette.setColor( QPalette::Foreground, цвет );
bool Filter1::eventFilter( QObject* obj, QEvent* e ){ if ( !obj->isWidgetType() ) return true; QWidget* w = (QWidget*) obj; if ( e->type() == QEvent::Enter ) { QPalette palette; palette.setColor(w->foregroundRole() , QColor(0,58,255)); w->setPalette(palette); } else if ( e->type() == QEvent::Leave ) { QPalette palette; palette.setColor(w->foregroundRole(), QColor(0,0,0)); w->setPalette(palette); } else if ( e->type() == QEvent::MouseButtonPress ){ // вот тут что писать, если я допустим, хочу выполнить свою функцию при клике мышкой? } return false;}
class Filter : public QObject{public: Filter( QObject* parent = 0 ) : QObject(parent) {} bool eventFilter( QObject* obj, QEvent* e );};//class gsmbf2 : public QDialog, public Ui::gsm{Q_OBJECTpublic: gsmbf2( QWidget * parent = 0, Qt::WFlags f = 0 ); void activateDownload();//....private slots://....};
gsmbf2::gsmbf2( QWidget * parent, Qt::WFlags f) : QDialog(parent, f){ QTextCodec *codec=QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec); setupUi(this); label->installEventFilter(new Filter(label)); }//void gsmbf2::test(){ textEdit->append("asd");}//bool Filter::eventFilter( QObject* obj, QEvent* e ){ if ( !obj->isWidgetType() ) return true; QWidget* w = (QWidget*) obj; if ( e->type() == QEvent::Enter ) { QPalette palette; palette.setColor(w->foregroundRole() , QColor(0,58,255)); w->setPalette(palette); } else if ( e->type() == QEvent::Leave ) { QPalette palette; palette.setColor(w->foregroundRole(), QColor(0,0,0)); w->setPalette(palette); } else if ( e->type() == QEvent::MouseButtonPress ){ qDebug("ok");// test(); или gsmbf2::test(); вот тут не могу вызвать test() } return false;}
gsmbf2* sm =new gsmbf2(); sm->test();
gsmbf2* sm =new gsmbf2();sm->test();
void gsmbf2::test(){ QMessageBox msgBox; msgBox.setStandardButtons(QMessageBox::Yes); msgBox.exec(); qDebug("asddsa"); textEdit->append("he he");}