当前位置: 首页 > news >正文

网站建设公司找博行专业制作简历收费

网站建设公司找博行,专业制作简历收费,网络规划设计师攻略,网站建设捌金手指花总四目录 第三天1 自定义控件封装2 QT鼠标事件3 定时器4 event事件分发器5 事件过滤器6 绘图事件Qpainter 源码#xff1a;CPP学习代码 第三天 1 自定义控件封装 新建一个QT widgetclass#xff0c;同时生成ui,h,cpp文件 在smallWidget.ui里添加上你想要的控件并调试大小 回到… 目录 第三天1 自定义控件封装2 QT鼠标事件3 定时器4 event事件分发器5 事件过滤器6 绘图事件Qpainter 源码CPP学习代码 第三天 1 自定义控件封装 新建一个QT widgetclass同时生成ui,h,cpp文件 在smallWidget.ui里添加上你想要的控件并调试大小 回到mainwidget.ui拖入一个widget因为我们封装的也是widget右击提升为输入名字名字一定要写对。 此时还需要进入mainWidget.h按住ALT进入ui_mainWidget.h修改smallWidget的为引号“”“”是本地的头文件这时候运行就能看到我们的控件了。 在smallwidget.cpp里编写代码让这两个控件QspinxBox和QSilder联系起来查找手册里的信号和槽没有就查找父类 //QspinxBox移动QSlider跟着移动 查手册没有就查父类 connect(ui.spinBox,QSpinBox::valueChanged,ui.horizontalSlider,QSlider::setValue); //QSilder移动QspinxBox跟着移动 connect(ui.horizontalSlider, QSlider::sliderMoved,ui.spinBox, QSpinBox::setValue);再添加两个按钮一个显示值一个让值变成一半 在smallwidget头文件里定义两个函数并到cpp里实现 //设置值 void setNumber(int value); //得到值 int getNumber();void smallWidget::setNumber(int value) {//设置值ui.spinBox-setValue(value); }int smallWidget::getNumber() {//返回值return ui.spinBox-value(); }再到mainwidget.cpp里实现信号的连接由于smallwi是连接到mainwi里边的widget所以可以通过ui来访问widget来得到我们定义的函数 //点击获取值 connect(ui.btn1,QPushButton::clicked,[](){qDebug() ui.widget-getNumber(); }); //点击设置值 connect(ui.btn2, QPushButton::clicked, []() {ui.widget-setNumber(50);qDebug() ui.widget-getNumber(); });2 QT鼠标事件 Enterevent鼠标进入这个控件就会被捕捉。 不想用ui只想用自定义事件来捕捉鼠标就新建一个QTclass只要h和cpp。查询手册鼠标进入和鼠标退出的函数直接复制。 //鼠标进入 void enterEvent(QEnterEvent* event);//鼠标离开 void leaveEvent(QEvent* event);void mylabel::enterEvent(QEnterEvent * event) {qDebug() 鼠标进入了; }void mylabel::leaveEvent(QEvent* event) {qDebug() 鼠标离开了; }在ui中拖入label因为我们使用的Qlabel所以这个mylabel.h和cpp应该继承QLabel更改以下三处 然后跟上边一样将这个更主界面连接起来ui界面右键提升为输入名字然后修改ui_mainWidget.h里边将mylabely的引用改为“”。此时运行就会发现能够捕捉到鼠标 在查询手册QLabel还有很多对鼠标的操作我们直接复制来实现可以在点击时实现输出移动时输出需要更改因为移动是一个过程。Qstring格式化输出Qstring%1 %2.arg(参数1).arg(参数2) void mylabel::mousePressEvent(QMouseEvent* ev) {//QT6很多都删了但是还能使用不推荐if(ev-button() Qt::LeftButton){QString str QString(鼠标按下 x %1 y %2 globalx%3 ).arg(ev-pos().x()).arg(ev-pos().y()).arg(ev-globalPosition().toPoint().x());qDebug() str;} }void mylabel::mouseReleaseEvent(QMouseEvent* ev) {if (ev-button() Qt::LeftButton){qDebug() 鼠标释放;} }void mylabel::mouseMoveEvent(QMouseEvent* ev) {//因为移动是个过程所以直接不能够触发这边用的是buttons里边包含了三种状态使用与操作符当状态和Leftbutton相同时触发if (ev-button() Qt::LeftButton){ qDebug() 鼠标移动111;} }在构造函数里添加上鼠标追踪就不用判断是否点击或者移动来打印信息会实时打印 mylabel::mylabel(QWidget*parent): QLabel(parent) {//设置鼠标追踪默认falsesetMouseTracking(true); }3 定时器 使用时间间隔来做出动作可以让数加一。首先得在头文件里重写定时器事件timerEvent可以定义定时器的idstartimer启动定时器,让不同的控件有不同的时间间隔通过timerId来指定对应的计时器。第二种方式直接使用QTimer新建一个对象使用timeout信号连接即可。 //.h //重写定时器事件 void timerEvent(QTimerEvent *event);int id1;//定时器的id int id2;//定时器的id//.cpp #include QTimer mainWidget::mainWidget(QWidget *parent): QWidget(parent) {ui.setupUi(this);//启动定时器id1 startTimer(1000);//单位毫秒每隔一秒调用函数id2 startTimer(2000);//单位毫秒每隔2秒调用函数//定时器的第二种方式QTimer* timer new QTimer(this);//启动定时器timer-start(500);connect(timer,QTimer::timeout,[](){static int num2 1;ui.label3-setText(QString::number(num2));});//点击按钮暂停connect(ui.btn1,QPushButton::clicked,\[\](){timer-stop();}); }mainWidget::~mainWidget() {}void mainWidget::timerEvent(QTimerEvent * event) {if (event-timerId() id1){static int num 1;ui.label2-setText(QString::number(num));}// //两秒跳一次//if (event-timerId() id2)//{// static int num2 1;// ui.label3-setText(QString::number(num2));//}}4 event事件分发器 每个发出的响应都会经过这个事件分发器如果返回true就直接截胡了相当于你点击鼠标是不触发鼠标点击而触发你定义的事件 type里边有很多的事件 如果返回值是true代表用户需要拦截处理这个事件不向下分发 //.h //通过Event事件分发器拦截鼠标按下事件 bool event(QEvent *e);//.cpp bool mylabel::event(QEvent* e) {//如果是鼠标按下在event事件分发中做拦截操作if (e-type() QEvent::MouseButtonPress){//类型转换e是ev的父类QMouseEvent* ev static_castQMouseEvent*(e);QString str QString(鼠标按下222 x %1 y %2 globalx%3 ).arg(ev-pos().x()).arg(ev-pos().y()).arg(ev-globalPosition().toPoint().x());qDebug() str;return true;//代表用户自己处理这个事件}//其他事件交给父类处理默认处理return QLabel::event(e); }5 事件过滤器 相当于拦截了事件分发器。使用过程两个步骤1、给控件安装事件过滤器2、重写eventfilter事件 //.h//在widget中重写eventfilter事件bool eventFilter(QObject *watched, QEvent *event);//.cpp //给label1安装事件过滤器 //1、构造函数里安装事件过滤器 ui.label1-installEventFilter(this);//2、重写事件,obj就是控件 bool mainWidget::eventFilter(QObject* watched, QEvent* event) {if (watched ui.label1){if (event-type() QEvent::MouseButtonPress){//类型转换e是ev的父类QMouseEvent* ev static_castQMouseEvent*(event);QString str QString(事件过滤器鼠标按下 x %1 y %2 globalx%3 ).arg(ev-pos().x()).arg(ev-pos().y()).arg(ev-globalPosition().toPoint().x());qDebug() str;}}//默认交给父类处理return QWidget::eventFilter(watched,event); }6 绘图事件Qpainter 整体比较简单。只需要重写panitEvent事件并且声明画家对象,笔刷画笔也只需要先声明对象。 //.h //绘图事件 void paintEvent(QPaintEvent *);//.cpp void mainWidget::paintEvent(QPaintEvent*) {//实例化画家对象,this指定的是绘图设备QPainter painter(this);//设置画笔QPen pen(QColor(255,0,0));pen.setWidth(3);//宽度pen.setStyle(Qt::DotLine);//风格//使用画笔,红色painter.setPen(pen);//画刷会填充封闭的图形QBrush brush(QColor(0,255,0));painter.setBrush(brush);//画线painter.drawLine(QPoint(0,0),QPoint(100,100));//画圆painter.drawEllipse(QPoint(100,100),50,50);//画矩形painter.drawRect(50,50,50,50);//画文字painter.drawText(QRect(10,200,150,50),学习); }
http://www.zqtcl.cn/news/1822/

相关文章:

  • 网站开发技术发展史超级优化液
  • 国内ui设计网站html教学
  • 双城网站建设公司深圳景观设计公司排名
  • 网站建设论文做智慧教室的网站
  • wordpress 做影视站阳江招聘临时工
  • 郑州汉狮公司做网站html怎么添加图片为背景
  • 免费的微网站哪个好免费网页视频下载器
  • 制作网站开发公司给别人做网站挣钱吗?
  • 公司网站做的一样算不算侵权6网站建设评分标准
  • 秦皇岛网站制作的流程网站一年多少费用
  • 成都电商平台网站设计外包加工原因
  • 上海青浦区网站建设公司长春制作网站
  • 礼服购物车网站模板河东手机网站建设
  • 避免网站 404软件技术专业就业方向
  • 群站wordpress怎么查网站备案域名
  • 英文网站建设费用微信小程序怎么关闭防沉迷
  • 中国建设银行官企业网站asp.net 4.0网站开发实例教程
  • 安国手机网站设计3一6年级科技小制作手工
  • 网站开发模wordpress 干嘛的
  • 建设网站需要招聘哪些人兴县做网站公司
  • 17网站一起做网店代发流程沃尔玛网上商城是正品吗
  • 网站外包多少人做全美东莞网站建设
  • 韩国优秀网站wordpress做淘客网站
  • 网站开发实例百度云山东关键词优化联系电话
  • 关于seo网站优化公司网页设计师培训机构免费
  • 免费网站服务器安全网站的主要功能
  • 高端企业网站信息网站更改备案信息在哪里
  • 做ppt软件怎么下载网站漳州seo网站快速排名
  • frontpage导入网站济南市建设局网站查房产信息
  • 莆田建网站公司自己做网站难不难