详解QT 自定义控件 捕获鼠标消息

移动开发
本文介绍的是详解QT 自定义控件 捕获鼠标消息,自定义控件的内容,去文章里面看,很详细。先来看内容。

QT 自定义控件 捕获鼠标消息是本文要介绍的内容。下午刚在qt中文论坛逛了下,发现有人提问说:能不能让鼠标一移动到QlineEdit的控件上就触发一个信号,我想了想,觉得这是可行的,根据在windows上的经验,要想让这样的控件也来捕获鼠标之类的消息,可以是这样做的:

自己从系统默认的控件类里派生出自己的控件类来。其实这个这个类最主要的作用就是能让自己来写一些处理鼠标之类的函数,比方说在MFC里让自己的这个控件类来增加对WM_MOUSEMOVE消息的处理函数。这样鼠标一移动到控件上,我们自己的程序就能处理鼠标的移动消息了。

那么qt中能不能也这样呢,翻了翻文档,在Qwidget里发现有一个enterEvent()的函数,文档介绍说一旦鼠标移动到Qwidget的时候,enterEvent()这个函数将被调用。所以我们也可以从控件类里派生出来一个自己的控件类,然后自己实现enterEvent()函数,在这个函数里发射一个信号。这就OK了。

大致代码:

  1. class MyEdit:public QlineEdit  
  2. {  
  3.        Q_OBJECT  
  4.        public:  
  5.              MyEdit(QWidget * parent, const char * name);  
  6.               void enterEvent( QEvent * e);  
  7. };  
  8. MyEdit::MyEdit(QWidget * parent, const char * name):QLineEdit(parent,name)  
  9. {  
  10.        this->setText("11.11");  
  11. }  
  12. void MyEdit::enterEvent( QEvent * e)  
  13. {  
  14.        QString s = this->text();  
  15.        emit textChanged (s);  

我现在把textChanged (s)信号连接到一个显示部件里,用QLCDNumber部件。

  1. class MyWindow:public QVBox  
  2. {  
  3.        public:  
  4.               MyWindow();  
  5.        private:  
  6.               MyEdit *                            lineedit;  
  7.               QLCDNumber *                   lcdnum;  
  8. };  
  9. MyWindow::MyWindow()  
  10. {  
  11.        QHBox* hbox1 = new QHBox(this);   
  12.        lineedit = new MyEdit(hbox1,0);  
  13.        QHBox* hbox2 = new QHBox(this);  
  14.        lcdnum = new QLCDNumber(hbox2);  
  15.        connect(lineedit,SIGNAL(textChanged ( const QString & )),lcdnum,SLOT(display ( const QString &)));  

主函数:

  1. int main(int argc, char **argv)   
  2. {  
  3.        QApplication a(argc, argv);  
  4.        MyWindow w;  
  5.        a.setMainWidget(&w);  
  6.        w.setGeometry(500,200,200,150);  
  7.        w.show();  
  8.        a.exec();  

OK

其实我觉得这是个经验问题,像GUI程序,我觉得只是一些实现的类库不一样,比方说用qt的用qt,用MFC的用MFC,其实很多思路都会是差不多的。而只要你比较熟悉一种GUI库了,其他的学起来都比较的轻松了。因为等到你一种库搞得比较的熟悉了,GUI该有的些什么功能阿,控件阿,都比较熟悉了,我觉得就只剩下用什么用的库来实现的问题了。这个时候只要有一份某种GUI库的文档。很多问题就号解决了。

小结:关于详解QT 自定义控件 捕获鼠标消息 的内容介绍完了希望本文随你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-20 16:03:03

Qt 控件 鼠标

2011-06-23 10:49:13

Qt 自定义信号

2011-04-19 10:33:16

ASP.NET自定义控

2013-04-19 10:14:24

2009-06-08 20:13:36

Eclipse自定义控

2017-04-21 14:27:21

Android控件QQ未读消息

2011-08-18 09:44:33

iPhone SDK仪表控件UIDialView

2017-02-17 09:37:12

Android自定义控件方法总结

2009-09-11 11:04:23

C# WinForm自

2019-06-10 10:08:16

Windows 10Windows鼠标指针

2015-02-11 17:49:35

Android源码自定义控件

2009-08-03 13:34:06

自定义C#控件

2009-08-03 13:39:46

C#自定义用户控件

2009-09-03 13:34:03

.NET自定义控件

2022-06-30 14:02:07

鸿蒙开发消息弹窗组件

2014-09-24 11:42:46

AndroidButton

2009-08-10 14:16:59

ASP.NET自定义控

2015-01-22 15:59:07

Android源码日期时间控件SelectTime

2009-07-28 09:32:41

ASP.NET自定义控

2010-08-03 16:13:01

FlexBuilder
点赞
收藏

51CTO技术栈公众号