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

怎么让同一个局域网上的计算机看到我做的网站以公司名称为后缀的邮箱

怎么让同一个局域网上的计算机看到我做的网站,以公司名称为后缀的邮箱,云南省住房和建设厅网站,公司网站制作方案事件的概念 在Qt中,以事件驱动UI工具集,包括信号和槽都依赖于Qt的事件处理机制。通常事件是由窗口系统或Qt自身产生的,用以响应所发生的各类事情。如:用户按下并释放键盘或鼠标、窗口缩放后重绘、定时器到时等。如下图&#xff1…

事件的概念

  • 在Qt中,以事件驱动UI工具集,包括信号和槽都依赖于Qt的事件处理机制。
  • 通常事件是由窗口系统或Qt自身产生的,用以响应所发生的各类事情。如:用户按下并释放键盘或鼠标、窗口缩放后重绘、定时器到时等。
  • 如下图:事件比信号更原始。一个下压式按钮首先感受到鼠标事件,在进行必要的处理以产生按钮下沉后弹起的视觉效果之后,才会发射clicked()信号。
    在这里插入图片描述

如何处理事件

  • 在Qt中,事件被封装为对象,所有的事件对象类型都继承自抽象类QEvent
  • 事件发生时,首先被调用的是QObject类中的虚函数event(),其参数(QEvent)标识了具体的事件类型
  • 在Qt桌面应用(Qt Widgets Application)开发中,QWidget类覆盖了其基类中的event()虚函数,根据具体事件调用具体事件处理函数:
    • void QWidget::mousePressEvent(QMouseEvent* e); // 鼠标按下事件
    • void QWidget::mouseReleaseEvent(QMouseEvent* e); // 鼠标抬起事件
    • void QWidget::mouseMoveEvent(QMouseEvent* e); // 鼠标移动事件
    • void QWidget::paintEvent(QPaintEvent* e); // 绘图事件

绘图事件

  • 通过绘图事件,可实现自定义的图像绘制。下列情况之一发生时,将触发窗口的绘制事件,即QWidget类的paintEvent()虚函数会被调用:
    • 窗口被创建后第一次显示出来
    • 窗口由隐藏状态转变为可见状态
    • 窗口由最小化状态转变为正常或最大化状态
    • 窗口因尺寸大小的变化需要呈现更多的内容
    • QWidget类的update()/repaint()成员函数被调用
  • 若希望在自己的窗口中显示某个图像,在QWidget的窗口子类中可重写绘图事件函数paintEvent,在其中可用QPainter(Qt二维图形引擎)实现指定的图像绘制、渲染等操作。
void XXX::paintEvent(QPaintEvent* e)
{// 创建画家对象QPainter painter(this)// 获取绘图所在矩形区域QRect rect = ui->frame->frameRect()// 坐标系平移,让rect和painter使用相同的坐标系rect.translate(ui->frame->pos());// 构建要绘制的图形对象QImage image(":/images/" + QString::number(m_index) + ".jpg");// 使用painter将image图片画到rectpainter.drawImage(rect, image);
}

定时器事件

实现机制

  • 定时器事件,由QObject提供
  • 定时器信号,由QTimer提供
通过定时器事件实现定时器
  • int QObject::startTimer(int interval); 启动定时器,以后每隔interval毫秒触发一次定时器事件,返回定时器ID。
  • void QObject::timerEvent(QTimerEvent* e); 虚函数,定时器事件处理函数
  • void QObject::killTimer(int id); 关闭参数id所标识的定时器

定时器摇奖部分代码

//初始化部分操作
void XXX::init(void)
{m_index = 0;isStarted = false;// 设置随机种子qsrand(QTime::currentTime().msec());// 加载“./photos”中所有图片到图片容器loadImages("./photos");
}// 开始按钮对应槽函数
void XXX::on_pushButton_clicked()
{if(isStarted == false){isStarted = true;	// 摇奖开始m_timer = startTimer(50);ui->pushButton->setText("停止");}else{isStarted = false;	// 摇奖结束killTimer(m_timer);ui->pushButton->setText("开始");}
}// 加载图片到容器功能
void XXX::loadImages(const QString& path)
{QDir dir(path);// 遍历当前目录所有图片QStringList listFiles = dir.entryList(QDir::Files);for(int i = 0; i < listFiles.size(); i++){QImage image(path + "/" + listFiles.at(i));m_vecImages << image;}// 递归遍历子目录中的图片QStringList listDirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);for(int i = 0; i < listDirs.size(); i++){loadImages(path + "/" + listDirs.at(i));}	
}// 定时器事件处理函数
void XXX::timerEvent(QTimerEvent*  e)
{m_index = qrand() % m_vecImages.size();update();	//将触发绘图事件处理函数
}// 绘图事件处理函数
void XXX::paintEvent(QPaintEvent* e)
{QPainter painter(this);QRect rect = ui->frame->frameRect();rect.translate(ui->frame->pos());painter.drawImage(rect, m_vecImages[m_index]);
}
通过QTimer实现定时器

QTimer m_timer

  • void start(int msec); 开启定时器
  • void stop(); 停止定时器
    每当定时器到时后会发射信号:timeout
    connect(&m_timer, SIGNAL(timeout()), this, SLOT(onTimeout()));

鼠标和键盘事件

鼠标事件

QWidget类定义了以下虚函数提供对鼠标事件的处理

  • virtual void mousePressEvent(QMouseEvent* e); //鼠标按下
  • virtual void mouseReleaseEvent(QMouseEvent* e); //鼠标抬起
  • virtual void mouseMoveEvent(QMouseEvent* e); //鼠标移动
  • virtual void mouseDoubleClickEvent(QMouseEvent* e); //鼠标双击
// 鼠标左键拖动QLabel//鼠标按下
void XXX::mousePressEvent(QMouseEvent* e)
{// 是否鼠标左键if(e->button() == Qt::LeftButton){// 获取label所在矩形区域QRect rect = ui->m_label->frameRect();// 坐标平移:让rect和鼠标使用相同的坐标系rect.translate(ui->m_label->pos());// 判断当前鼠标点击位置是否在QLabel的矩形区域中if(rect.contains(e->pos())){m_drag = true;		// 可拖拽m_pos = ui->m_label->pos() - e->pos();		// 鼠标相对QLabel的位置}}
}
// 鼠标抬起
void XXX::mouseReleaseEvent(QMouseEvent* e)
{if(e->button() == Qt::LeftButton){m_drag = false;}
}
// 鼠标移动
void XXX::mouseMoveEvent(QMouseEvent* e)
{if(m_drag){// 计算QLabel要移动的新位置QPoint newPos = e->pos() + m_pos;QSize s1 = size();		// 获取父窗口的大小QSize s2 = ui->m_label->size();		//获取QLabel的大小 // 设置QLabel移动的范围限制// x: 0 ~ s1.width() - s2.width()if(newPos.x() < 0){newPos.setX(0);}else if(newPos.x() > s1.width() - s2.width()){newPos.setX(s1.width() - s2.width());}// y: 0 ~ s1.height() - s2.height()if(newPos.y() < 0){newPos.setY(0);}else if(newPos.y() > s1.height() - s2.height()){newPos.setY(s1.height() - s2.height());}// 移动QLabel到新位置ui->m_label->move(newPos);}	
}

键盘事件

QWidget类定义了以下虚函数提供对键盘事件的处理

  • virtual void keyPressEvent(QKeyEvent* e); // 按键按下
  • virtual void keyReleaseEvent(QKeyEvent* e); // 按键抬起
// 键盘方向键控制QLabel移动
void XXX::keyPressEvent(QKeyEvent* e)
{//QLabel所在位置的x坐标int x = ui->m_label->pos().x();//QLabel所在位置的y坐标int y = ui->m_label->pos().y();// 向上移动(每次移动10像素)if(e->key() == Qt::Key_Up){ui->m_label->move(x, y - 10);}else if(e->key() == Qt::Key_Down){ui->m_label->move(x, y + 10);} else if(e->key() == Qt::Key_Left){ui->m_label->move(x - 10, y);}else if(e->key() == Qt::Key_Right){ui->m_label->move(x + 10, y);}
}

参考:达内教育QT图形框架

http://www.dtcms.com/a/606275.html

相关文章:

  • Java接口与抽象类深度指南:从原理到实战
  • 人工智能备考——2.1.4题解
  • 做淘宝网站需要什么邵阳市城市建设网站
  • 告别闭门造车:用竞品ASO分析驱动应用下载转化
  • 【LeetCode】108. 将有序数组转换为二叉搜索树
  • 12.vector—string(下)
  • 具身智能数据采集全方案:动作捕捉技术驱动机器人拟人化进阶
  • 公司网站地图怎么做长沙网站托管优化
  • 网站免费创建雅虎搜索
  • 多通道手腕压力脉搏波信号
  • 眉县网站建设wordpress首页flash
  • 贪心算法实验2
  • C语言在线编译器开发 | 提高编译效率与用户体验的创新技术
  • MD5 校验脚本
  • 重生归来,我要成功 Python 高手--day35 深度学习 Pytorch
  • 马云有没有学过做网站百度收录时间
  • 企业网站的规划与建设ppt建设一个打鱼游戏网站
  • 在 Linux Ubuntu 24.04 安装 IntelliJ IDEA
  • 自适应网站建设方案建设网站 请示 报告
  • 有哪些做网站的品牌ios开发app
  • C语言编译器电脑版 | 提供高效编译体验,轻松学习与开发
  • 容器访问某个链接中断后面又正常,socket
  • 构建现代应用的9个Python GUI库
  • 做网站业务的怎么寻找客户做网站公司哪家强
  • 【第1章>第6节】基于FPGA的图像膨胀处理算法的Verilog实现
  • 网站开发对企业的关键化妆品首页设计
  • 基于图的可解释性推荐综述
  • Nginx搭建RTMP点播流媒体服务器步骤详解,Nginx+RTMP+OBS推流搭建流媒体服务器
  • 东莞建设网站官网住房和城乡网站平台系统设计公司
  • 具身智能-一文详解视觉-语言-动作(VLA)大模型(2)