(二十八)Qt中的事件处理

QT QTreeView\QTreeWidget控件 使用详解 本文详细的介绍了QTreeView、QTreeWidget控件的各种操作,例如:新建界面、控件布局、设置列、设置宽高、设置列表头、设置复选框、设置图标、添加树、删除树、查找树、修改树、设置选中、树排序、事件、信号、槽函数、添加节点、默认选中、.h源文件、cpp源文件、其它文章等等操作。实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。布局管理器可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等; 阅读详情

Qt事件

1、  在Qt中,Qt是一个QEvent对象

2、  Qt事件用于描述程序内部或外部发生的动作

3、  任意的QObject对象都具备事件处理的能力(想要接受并处理事件的对象必须继承自QObject)

 

QEvent是所有事件对象的抽象基类

 

事件来源

1、Spontaneous events(自发事件)

由系统消息(鼠标按键、键盘按键灯)转化而来

2、Postedevents

由Qt或应用程序产生,会被放入事件队列

由QCoreApplication成员函数

void

postEvent ( QObject * receiver, QEvent * event )

void

postEvent ( QObject * receiver, QEvent * event, int priority )

发送

3、Sent events

由Qt或应用程序产生,不放入队列,直接被派发和处理

由QCoreApplication成员函数

bool

sendEvent ( QObject * receiver, QEvent * event )

发送

 

GUI应用程序的事件处理到槽

1、  Qt事件产生后被立即寄送到发生系统消息的QWidget对象

2、  QWidget中的event(QEvent *)按照Qt事件的类型分发给相应事件处理函数

3、  事件处理函数处理Qt事件

4、  事件处理函数中发送Qt中预定义的信号

5、  调用与信号关联的槽函数

 

//main.cpp

#include "Widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Widget w;
   w.show();
 
   return a.exec();
}

//QMyPushButton.h

#ifndef _QMYPUSHBUTTON_H_
#define _QMYPUSHBUTTON_H_
 
#include <QPushButton>
 
typedef void(QButtonListener)(QObject*,QMouseEvent*);
 
class QMyPushButton : public QPushButton
{
   Q_OBJECT
 
protected:
   QButtonListener* m_listener;
 
   //重写QPushButton的事件处理函数
   void mouseReleaseEvent(QMouseEvent *e);
public:
   explicit QMyPushButton(QWidget* parent = 0, QButtonListener* listener =0);
};
 
#endif // _QMYPUSHBUTTON_H_


//QMyPushButton.cpp

#include "QMyPushButton.h"
#include <QMouseEvent>
 
QMyPushButton::QMyPushButton(QWidget*parent, QButtonListener* listener):QPushButton(parent)
{
   m_listener = listener;
}
 
//重写改写事件处理函数,会改变程序的行为。
void QMyPushButton::mouseReleaseEvent(QMouseEvent*e)
{
   if(m_listener != NULL)
    {
       //调用自定义的事件处理函数,尽管按钮的clicked信号被连接到onMyButtonClicked槽函数,
       //但因自定义的m_listener函数里并不触发clicked信号,从而槽函数不会被调用。
       m_listener(this, e);
       e->accept();//事件被接收,就不再传递到父QWidget
 
       setDown(false); //按钮设置为“弹起”状态
    }
   else
    {
       //父类的mouseReleaseEvent会去调用clicked(),并触发SIGNAL(clicked())
       //从而调用到连接到该信号的槽函数
       QPushButton::mouseReleaseEvent(e); //调用父类
    }
}

//Widget.h

#ifndef _WIDGET_H_
#define _WIDGET_H_
 
#include <QWidget>
#include "QMyPushButton.h"
 
class Widget : public QWidget
{
   Q_OBJECT
   QMyPushButton myButton;
 
protected slots:
   void onMyButtonClicked();
 
public:
   Widget(QWidget *parent = 0);
   ~Widget();
};
 
#endif // _WIDGET_H_

//Widget.cpp

#include "Widget.h"
#include <qDebug>
 
//自定义事件处理函数
void onMyButtonMouseRelease(QObject*sender, QMouseEvent* e)
{
   qDebug() << "onMyButtonMouseRelease(QObject* sender,QMouseEvent* e)";
}
 
Widget::Widget(QWidget *parent)
    :QWidget(parent),myButton(this, onMyButtonMouseRelease) //实验2:myButton(this,0)
{
   myButton.setText("QMyPushButton");
 
   connect(&myButton, SIGNAL(clicked()), this,SLOT(onMyButtonClicked()));
}
 
//槽函数,用于接收按钮的clicked信号
void Widget::onMyButtonClicked()
{
   qDebug() << "onMyButtonClicked()" ;
}
 
Widget::~Widget()
{
}


区分事件(QEvent)与信号(SIGNAL):

事件由具体QObject对象进行处理

信号由具体QObject对象主动产生

改写事件处理函数可能导致程序行为发生变化

信号是否存在对应的槽函数不会改变程序行为

一般而言,信号在具体的事件处理函数中产生

 

一般情况下,使用Qt预定义的组件,使用信号,自定义组件,使用事件

 

event()函数

原型bool event( QEvent * event ) [virtualprotected]

 

1、  用于Qt事件的分发

2、  可以通过重写event()在分发事件之前做一些操作

3、  可以通过QEvent成员函数

Type

type () const

来判断将要被分发的Qt对象的类型,以便对特定类型的事件进行操作

4、如果当前事件使我们想要的并且已经被我们处理,return true告诉Qt当前事件处理完毕,可以去处理事件队列中的下一事件了,如果当前事件不是我们想要的return false或者return父类的event()函数,并以当前事件作为参数传递

 

 

Qt事件可能被传递给父组件

1、  Qt事件被组件对象处理后可能传递其父组件对象

2、  QEvent中关键成员函数(实际上只是在操作或判断一个标志位)

void

accept ()

void

ignore ()

bool

isAccepted () const

前两个成员函数分别告诉Qt

1)、接受者忽略了当前事件,这种情况下当前事件可能被传递给接受者的父组件

2)、接受者期望处理当前事件,这种情况下当前事件

后一个成员函数用来判断当前事件是否被处理

 

一般情况下不使用accept ()或ignore ()来指示当前事件是否被处理,而是如果期望忽略当前事件,调用父类的事件处理函数

 

//main.cpp

#include "Widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Widget w;
   w.show();
 
   return a.exec();
}
/*当在编辑框中按下按键时输出结果:(注意MyLineEdit的父组件,即w中的
的event事件并未被触发
MyLineEdit::event
MyLineEdit::keyPressEvent
*/

//MyLineEdit.h

#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H
 
#include <QLineEdit>
 
class MyLineEdit : public QLineEdit
{
   Q_OBJECT
public:
   explicit MyLineEdit(QWidget* parent = 0);
   bool event(QEvent* e);
   void keyPressEvent(QKeyEvent* e);
};
 
#endif // MYLINEEDIT_H

//MyLineEdit.cpp

#include "MyLineEdit.h"
#include <QKeyEvent>
#include <QDebug>
 
MyLineEdit::MyLineEdit(QWidget*parent):QLineEdit(parent)
{
 
}
 
bool MyLineEdit::event(QEvent* e)
{
   if( e->type() == QEvent::KeyPress)
    {
       qDebug() << "MyLineEdit::event";
    }
   return QLineEdit::event(e);
}
 
void MyLineEdit::keyPressEvent(QKeyEvent*e)
{
   qDebug() << "MyLineEdit::keyPressEvent";
   QLineEdit::keyPressEvent(e);
 
   //e->ignore(); //表示事件会继续传递给父组件,本例中为Widget对象
                 //如果注释或e-accept()表示不再传递,则父组件的
                 //event函数不会被触发
}

//Widget.h

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include "MyLineEdit.h"
 
class Widget : public QWidget
{
   Q_OBJECT
 
private:
   MyLineEdit myLineEdit;
 
public:
   Widget(QWidget *parent = 0);
 
   bool event(QEvent* e);
   void keyPressEvent(QKeyEvent* e);
 
   ~Widget();
};
 
#endif // WIDGET_H

//Widget.cpp

#include "Widget.h"
#include <QEvent>
#include <QDebug>
 
Widget::Widget(QWidget *parent)
    :QWidget(parent),myLineEdit(this)
{
}
 
//操作系统将消息转化为事件,并分发到了这个Widget,会首先调用
//这个Wiget的event函数,该函数可以收到多种的系统事件,同时其内部会根据event
//事件的类型调用相应的事件处理函数,如keyPressEvent()。比如,当发生按键事件时
//会先调用event(),再调用后面的keyPressEvent()
bool Widget::event(QEvent* e)
{
   if(e->type() == QEvent::KeyPress)
    {
       qDebug() << "Widget::event";
    }
 
   return QWidget::event(e);
}
 
void Widget::keyPressEvent(QKeyEvent *e)
{
   qDebug() << "Widget::keyPressEvent";
   QWidget::keyPressEvent(e);
}
 
Widget::~Widget()
{
 
}


 

事件过滤器:

1、事件过滤器可以对其他组件即将接收到的事件进行监控

2、任意的QObject对象都可以作为事件过滤器使用

3、事件过滤器对象需要重写

bool QObject::eventFilter ( QObject * watched, QEvent * event ) [virtual]

函数返回true表示事件已经处理,无需传递给watched,返回false则正常传递到watched

3、  事件过滤器在目标组件之前接收到事件

4、  事件过滤器能决定是否将事件转发到目标组件


注意事项:

1、如果一个组件安装了多个过滤器,则最后一个安装的会最先调用,类似于堆栈的行为。

2、事件过滤器和被安装的组件必须在同一线程,否则,过滤器不起作用

3、如果在install之后,这两个组件到了不同的线程,那么,只有等到二者重新回到同一线程的时候过滤器才会有效。

 

使用:

1、为事件过滤器对象重写eventFilter()函数

2、目标组件通过函数voidQObject::installEventFilter ( QObject * filterObj )安装事件过滤器

 

bool MainWindow::eventFilter(QObject *obj,QEvent *event)
 {
       if (obj == textEdit) //感兴趣对象
{
                if (event->type() ==QEvent::KeyPress) //感兴趣事件
{
                         QKeyEvent *keyEvent =static_cast<QKeyEvent*>(event);
                         if (keyEvent->key()== Qt::Key_Space)
                                                                 //…….
                         return true;
                }
       }
       // 不感兴趣的对象与事件调用父类同名函数执行默认处理
       return QMainWindow::eventFilter(obj, event);
}


 

 

//main.cpp

#include "Widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Widget w;
   w.show();
 
   return a.exec();
}
 

//MyLineEdit.h

#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H
 
#include <QLineEdit>
 
class MyLineEdit : public QLineEdit
{
   Q_OBJECT
public:
   explicit MyLineEdit(QWidget* parent = 0);
   bool event(QEvent* e);
   void keyPressEvent(QKeyEvent* e);
};
 
#endif // MYLINEEDIT_H

//MyLineEdit.cpp

#include "MyLineEdit.h"
#include <QKeyEvent>
#include <QDebug>
 
MyLineEdit::MyLineEdit(QWidget*parent):QLineEdit(parent)
{
 
}
 
bool MyLineEdit::event(QEvent* e)
{
   if( e->type() == QEvent::KeyPress)
    {
       qDebug() << "MyLineEdit::event";
    }
   return QLineEdit::event(e);
}
 
void MyLineEdit::keyPressEvent(QKeyEvent*e)
{
   qDebug() << "MyLineEdit::keyPressEvent";
   QLineEdit::keyPressEvent(e);
 
   //e->ignore(); //表示事件会继续传递给父组件,本例中为Widget对象
                   //如果注释或e-accept()表示不再传递,则父组件的
                   //event函数不会被触发
}


//Widget.h 

#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include "MyLineEdit.h"
 
class Widget : public QWidget
{
   Q_OBJECT
 
private:
   MyLineEdit myLineEdit;
 
public:
   Widget(QWidget *parent = 0);
 
   bool event(QEvent* e);
   void keyPressEvent(QKeyEvent* e);
 
   bool eventFilter(QObject* obj, QEvent* e);
 
   ~Widget();
};
 
#endif // WIDGET_H

//Widget.cpp

#include "Widget.h"
#include <QEvent>
#include <QKeyEvent>
#include <QDebug>
 
Widget::Widget(QWidget *parent)
    :QWidget(parent),myLineEdit(this)
{
   myLineEdit.installEventFilter(this);//安装事件过滤器,即让所有发往myLineEdit的事件
                                        //先由经由eventFilter过滤,这里委派Widget的
                                       //EventFilter来过滤
}
 
//操作系统将消息转化为事件,并分发到了这个Widget,会首先调用
//这个Wiget的event函数,该函数可以收到多种的系统事件,同时其内部会根据event
//事件的类型调用相应的事件处理函数,如keyPressEvent()。比如,当发生按键事件时
//会先调用event(),再调用后面的keyPressEvent()
bool Widget::event(QEvent* e)
{
   if(e->type() == QEvent::KeyPress)
    {
       qDebug() << "Widget::event";
    }
 
   return QWidget::event(e);
}
 
void Widget::keyPressEvent(QKeyEvent *e)
{
   qDebug() << "Widget::keyPressEvent";
   QWidget::keyPressEvent(e);
}
 
//每个过滤器可以过滤多个对事的事件
bool Widget::eventFilter(QObject* obj,QEvent* e)
{
   bool ret = true;//默认事件己经处理,不再传递到obj对象
 
   //该过滤器只过滤发往myLineEdit对象的KeyPress事件
   if ((obj == &myLineEdit) && (e->type() ==QEvent::KeyPress))
    {
       qDebug() << "Widget::eventFilter";
 
       QKeyEvent* evt = dynamic_cast<QKeyEvent*>(e);
 
       //当按下数字键时返回false即让事件继续发生myLineEdit
       switch(evt->key())
       {
       case Qt::Key_0:
       case Qt::Key_1:
       case Qt::Key_2:
       case Qt::Key_3:
       case Qt::Key_4:
        case Qt::Key_5:
       case Qt::Key_6:
       case Qt::Key_7:
       case Qt::Key_8:
       case Qt::Key_9:
           ret = false;
           break;
       default:
           break;
       }
    }
   else
    {
       ret = QWidget::eventFilter(obj, e);
    }
 
   return ret;
}
 
Widget::~Widget()
{
}


Qt中五种事件处理方式,控制权由低到高分别为:

1、重写事件处理函数

2、重写event()函数

3、为单个组件安装事件过滤器

4、为QApplication安装事件过滤器

5、重写QCoreApplication的成员notify()函数

bool MyEvent::notify(QObject *target,QEvent *event) 
   { 
   if(event->type() == MyEventType) 
   { 
       //…… 
       return true; 
   } 
   return QCoreApplication::notify(target,event); 
   } 
 


 

 声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作

 

Qt基础之二十八:在Qt中使用单例模式的最佳实践 ARGS被用来传入Type构造函数所需的参数,Q_GLOBAL_STATIC的ARGS是空括号(),表示调用Type的无参构造函数,如果我们使用Q_GLOBAL_STATIC_WITH_ARGS给它参数,就是调用对应的带参构造函数了。Q_GLOBAL_STATIC宏定义的变量则消除了这些问题,Q_GLOBAL_STATIC仅在第一次调用时才构造和初始化,节省了应用程序初始化加载的时间,确保了是线程安全的。使用Q_GLOBAL_STATIC_INTERNAL宏定义了一个innerFunction函数。 阅读详情

相关推荐

Qt系列文章之二十八(基于QThread多线程概述)

系列文章总纲 文章目录前言概念讲解QThread类功能简介QThread 常用接口介绍 前言   终于算是写到一个比较核心的功能了,对于一个项目,多线程是必不可少的,当然有的也不需要,不是说做项目就一定要使用多线程,不过一般复杂点的项目,多线程是必不可少的,所以从本章开始,将详解Qt多线程应用,以及pthread的应用详解,C++11多线程等都会涉及,不过还是以Qt中的QThread为主,下面讲解QThread的概念。 概念讲解   一个应用程序一般只有一个线程,一个线程内的操作是顺序执行的,如果有某个比较

波风水门 700

Qt event函数

事件对象创建完毕后,Qt 将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。 如上所述,event()函数主要用于事件的分发。所以,如果你希望在事件分发之前做一些操作,就可以在派生类中重写这个event()函数了。例如,我们希望在一个QWidget组件中监听 tab...

ShenHang_的博客 2078

OpenBCI脑电帽硬件DIY与低成本搭建实战

本文详细介绍了如何通过第三方兼容硬件和开源设计,低成本DIY一套功能完备的OpenBCI脑电采集系统。从硬件选购、组装、软件配置到信号调试,提供了完整的实战指南,将总成本控制在千元级别,使脑机接口技术对爱好者、学生和研究者变得更加触手可及。

weixin_29322855的博客 787

Qt5 事件(event)机制详解

1.简述 个人认为,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种: 在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。 系统自动发生,比如计时器事件(timerEvent)等。 在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会传给当前组件的event函数。如果当前组件没有安装事件过滤器(这个下文会提到),则会被event函数...

WCLEndless的博客 2654

LabVIEW安装NI-DAQmx的方法(适合2021版和2022版)

LabVIEW安装NI-DAQmx的方法(适合2021版和2022版)

qq_65101190的博客 2万+

基于ensp大学网络规划与设计(完整文档+ensp拓扑图)

大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。 在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。我相信这些经验不仅能够

qq1325513482的博客 5万+

Qt 之 Event

这里写目录标题事件事件开始事件对象QEvent事件的转发QWidget自定义事件处理函数鼠标追踪事件的接收和过滤accept()和ignore()accept()ignore()isAccepted()QCloseEvent关闭窗口事件event()Demo:检测Tab键重写event( )陷阱event( )控制器源码事件过滤器事件过滤场景eventFilter 函数调用机制安装和移除事件过滤器不应该应该event无法处理的情况事件过滤器的有点总结 事件 事件开始 exec()函数。 在启动该函数之后,程

wjjontheway的专栏 946

从 0 到 1,实战 Power BI 电商销售可视化看板全流程

本文详细介绍了从零开始使用Power BI构建电商销售可视化看板的全流程,涵盖数据准备、建模、可视化设计及高级功能应用。通过实战案例展示如何将复杂销售数据转化为直观图表,帮助电商从业者快速掌握销售趋势、热销产品和用户画像等关键信息,提升数据分析效率。

weixin_29061041的博客 485

事件与信号 函数 event()的作用

event()函数是 Qt 事件系统的核心,用于事件分发和拦截,允许开发者处理对象所接收的所有事件。信号与槽则是用于对象之间的通信机制,允许一个对象发出信号时,另一个对象可以通过槽函数作出响应。二者虽然功能上有一定的相似性,但事件更偏重于处理系统和用户的输入,而信号与槽则用于对象间的逻辑通信。

抟土成人祖,炼石补青天。眼中览银河,手可摘星辰。 1310

基于卷积神经网络的人脸表情识别(JAFFE篇)

1.win10/11操作系统2.python3.7以上3.tensorflow2.4以上版本(2.0其它版本需要微调)4.内存12G,显卡4G以上(没有独显倒是也能跑...)(这个可爱的妹子就是JAFFE数据集中的图片)

小林同学的计算机学习 5913

Windows 11下manage-bde命令实战:BitLocker锁了别慌,手把手教你用命令行找回数据

本文详细介绍了在Windows 11系统下使用manage-bde命令解锁BitLocker加密驱动器的实战方法。通过命令行诊断、恢复密钥获取、解锁流程演示及高级故障排除,帮助用户在系统锁定后快速找回数据,特别适合IT技术人员和遇到紧急情况的用户。

weixin_30902251的博客 329

Qt学习05:Event事件(处理分发传播与过滤)

Qt学习记录 - Event事件消息处理详解

ylh的博客 4023

OpenCV自学记录(1)——(一拳超人)图像处理基础(图像获取、图像变化)

学习深度学习进行图像分类和目标检测时,要有一定的图像处理的基础。在学习深度学习之前,看了一本《图像处理技术基础》,现在也忘得差不多了,后悔当初没有整理记录下来。现在整理一下图像处理的常用方法,最后实现一个小项目——基于OpenCV的车牌号识别。 OpenCV自学记录(1)——图像处理基础(一)1、图像获取1.1获取图像数据1.2 获取摄像头图像数据2、图像变化2.1 移动(translation)...

qq_40784418的博客 1455

初识QT(二十八)——Qt QSpinBox使用详解

QSpinBox 用于整数的显示和输入,一般显示十进制数,也可以显示二进制、十六进制的数,而且可以在显示框中增加前缀或后缀。 QDoubleSpinBox 用于浮点数的显示和输入,可以设置显示小数位数,也可以设置显示的前缀和后缀。 实例 samp4_3 演示 QSpinBox 和 QDoubleSpinBox 这两个组件的使用,图 1 是程序运行界面,该程序使用 QSpinBox 和 QDoubl...

图像学习之旅 7370

YOLOv8改进 | Neck篇 | Slim-Neck替换特征融合层实现超级涨点 (又轻量又超级涨点)

本文给大家带来的改进机制是Slim-neck提出的Neck部分,Slim-neck是一种设计用于优化卷积神经网络中neck部分的结构。在我们YOLOv8中,neck是连接主干网络(backbone)和头部网络(head)的部分,负责特征融合和处理,以便提高检测的准确性和效率。亲测在小目标检测和大尺度目标检测的数据集上都有大幅度的涨点效果(mAP直接涨了大概有0.4左右。同时本文对Slim-Neck的框架原理进行了详细的分析,不光让大家会添加到自己的模型在写论文的时候也能够有一定的参照。

Snu77的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

我的QT Creator学习笔记(二十八)——使用Qt操作相机

一、使用到的类: 1、QCameraInfo:用来查询系统当前可用的相机设备,其常用函数及其功能如下图 2、QCamera:该类提供了操作相机设备的诸多接口,常用接口如下图 3、QCameraImageCapture:这是一个图像录制类,与QCamera配合可以进行拍照。使用capture()可以捕获图片并保存的文件, setEncodingSettings可以进行图像编码设置。 4、QMediaRecorder类用来记录媒体内容,与QCamera一起使用可以进行视频录制。通过.

sinat_41928334的博客 2089

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【二十八】【QT开发应用】模拟WPS Tab

这是TapTitle类的成员函数,用于设置标题栏中的宽度。该函数接受一个整数参数w,表示所需的宽度值。调用了的函数,将其最小宽度设置为传入的参数w。是QWidget类的成员函数,它指定了控件的最小宽度,确保控件不会被压缩到比这个宽度更小的尺寸。此操作允许动态调整标题栏中占位控件的大小,以适应不同的布局需求。

m0_74163972的博客 1601

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

二十八、目录操作

这段代码的主要目的是获取指定目录及其子目录中所有文件的大小,并以适当的单位(如字节、千字节、兆字节、吉字节)显示出来。QDirsizesizeqDebug()在main函数中,首先创建了一个对象,这是Qt的核心部分,用于处理事件循环等操作。然后获取当前路径,并存储到strPath变量中。接着调用函数,传入当前路径作为参数,打印出当前目录及其子目录的大小信息(以适当的单位表示)。最后进入事件循环,等待事件处理并返回退出码。

qq_67755192的博客 920

Qt 读取 XML 文件的方法

本文参考了多位大佬博客,以下是链接。 转自:(124条消息) Qt浅谈之二十八解析XML文件_乌托邦-优快云博客 转自:(124条消息) 利用 Qt 读取 XML 文件的方法_Ivan 的专栏-优快云博客_qt读取xml 一、简介 QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX。DOM(Document ObjectModel):将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些。SAX(Simple APIfor XML):一种事件驱...

pmghy1的博客 2万+

二十八、Qt之关于绘画模块的理解

要理解Qt的绘画模块,核心就是理解Qt的坐标系统: 视口坐标、视图坐标 窗口坐标、场景坐标 视口坐标 视口坐标,又可以叫做物理坐标,又或者视图坐标,表示绘图设备的任意一个矩形区域的物理坐标,可以只选取物理坐标的一个矩形区域用于绘图。默认情况下,视口等于绘图设备的整个矩形区域。 窗口坐标 窗口坐标,又可以叫做逻辑坐标,又或者场景坐标,它的坐标系是以绘图设备的中心为原点,构建坐标系。 窗口坐标优...

panchang199266的博客 404

Qt浅谈之二十八解析XML文件

转载自:http://blog.youkuaiyun.com/taiyang1987912/article/details/46695245一、简介        QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX。DOM(Document ObjectModel):将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些。SAX(Simple APIfor XML):一种事...

qq_26008971的博客 4637

Qt开发学习教程

Qt开发学习教程 一、Qt开发基础学习教程 本部分博客主要根据狄泰学院唐老师的《QT实验分析教程》创作,同时根据天山老妖自己的理解和网络搜集的资料及QT官方文档对部分知识点进行了扩展。本系列博客由天山老妖创作,发布于51CTO博客上。狄泰学院网站:http://course.dt4sw.com/ Qt开发基础学习教程目录如下: QT开发(一)——QT简介https://blog.51cto.com...

weixin_33882443的博客 1147

QT学习教程(二十八)

新的 min 值为原来的min 值和步长乘积的较小整数值,新的max 为原来的max 值和步长乘积的较大整数值。例如,一个坐标轴步长为 3.8,坐标轴上其他的刻度值都是 3.8 的倍数,在用户很不习惯,对于一个整数坐标值,合理的步长应给为 10n, 2·10n, 或者 5·10n。重新计算minX,maxX,minY, maxY 的值,重新得到坐标轴刻度的个数。函数scroll()增加或者减少minX,maxX,minY,maxY 的值,放大或缩小控件的尺寸为给定的偏移值乘以坐标刻度的两倍。

哂笑年少 747

Qt笔记(二十八)之使用QWebEngineView显示网页

一.QWebEngineView介绍 The QWebEngineView class provides a widget that is used to view and edit web documents QWebEngineView类提供了一个widget,可以用于查看和编辑web文档 二.使用举例 楼主的开发环境为Qt5.9.0 win10 msvc2015 32bit 1.添加一个widget,并将其提升为QWebEngineView 2.显示网页核心代码 // 加载网页 ui-

我是黄同学博客 5334
上一篇: (二十七)Qt容器之关联容器
下一篇: (二十九)QMimeData类与拖放事件
早起的虫儿灬
博客等级 码龄10年 54粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值