QT自定义控件方法:第一步创建QTProject,基类为QWidget(查ui);第二步是在.ui界面中创建需要的控件;第三步,在这个Project中点击Project名称添加一个新文件,添加一个继承QWidget的C++类;第四步,在这个.ui里面拖一个Widget控件,然后选择Widget,右键升级,输入第一个类名;第五步,关联第一个类Connect中的控件。示例:horizo??ntalSlider和spinboxapi(fragment):setRange(0,100)connect(ui->horizo??ntalSlider,&QSlider::valueChanged,[=](intvalue){ui->spinBox->setValue(value);connect(ui->spinBox,static_cast
").arg(x).arg(y);this->setText(str);voidmouseMoveEvent(QMouseEvent*e):其他同上,添加如下intbutton=e->buttons();..if(buttons&Qt::LeftButton)..if(buttons&Qt::RightButton)..if(buttons&Qt::MidButton)3.Eventdistributor(事件分发函数)函数:Distribute各种事件事件处理函数。方法:第一步创建一个QTProject,基类为QWidget(查ui);第二步,在.ui中拖一个Label控件;第三步,在这个Project中点击Project名称添加一个新的。文件,添加一个C++类,继承QLab埃尔;第四步,将窗口的Label控件提升到第三步创建的类;第五步,重写新类中的事件分发函数。api://事件分发函数boolmyLabel::event(QEvent*e){//如果返回值为true,表示事件处理完毕//如果返回值为false,表示事件处理完毕未被处理例如:if(e->type()==QEvent::MouseMove){returntrue;}//让其他事件通过returnQLabel::event(e);}4.事件过滤函数:1.在事件到达窗口之前,需要经过事件过滤器和事件派发器不同的地方:如果窗口中有多个标签,那么Clickmultiplelabels。此时多个标签都可以接收到鼠标点击事件。如果要拦截鼠标点击事件,可以从事件过滤器中统一拦截;2.事件过滤器是object对象或子类Object;3、需要安装事件过滤器;4.重写object对象或子类对象中的事件过滤函数。方法一:第一步创建QTProject,基类为QWidget(查ui);第二步,在.ui中拖一个Label控件;第三步,在这个Project中点击Project名称添加一个新文件,添加一个C++类,继承QLabel;第四步,将窗口的Label控件提升到第三步创建的类中;第五步在这个新建的类中重写事件过滤函数。api://rewriteeventfilterfunctionboolmyLabel::eventFilter(QObject*watched,QEvent*event){//返回值为true,表示事件被拦截,不会到达窗口//返回值为false,说明事件没有被拦截if(event->type()==QEvent::MouseButtonPress){returntrue;}returnfalse;}Finally://在新建的Label类构造函数中,安装事件过滤器this->安装事件过滤器(这个);方法二:第一步创建一个QTProject,基类为QWidget(查ui);第二步,在.ui控件中拖一个Label;第三步是在这个项目中在ect中点击Projectname,添加一个新文件,添加一个C++类,继承QLabel;第四步将窗口的Label控件提升为第三步创建的类;第五步创建另一个类,继承Object;第六步在这个类中重写了事件过滤函数;api:#include
