首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt事件系统与应用举例

事件可以由QObject子类的任何实例接收和处理,但它们与小部件尤其相关。 本文档介绍了在典型应用程序中如何传递和处理事件。 2....这个虚函数负责适当地做出反应,通常通过重新绘制窗口小部件。 如果您没有在虚拟函数的实现中执行所有必要的工作,则可能需要调用基类的实现。 5. 事件过滤器 6. 发送事件 7....几种事件的使用 函数的声明: protected: void changeEvent(QEvent *event); void showEvent(QShowEvent *event);...QWidget::event(event);} 简单说说上面几个事件。...③event 所有产生的事件都会进入这里面,根据需要自行处理 本来想捕获Tab键来着,结果无法捕获,因为被窗口焦点优先捕获。 所以捕获了Delete键 ④自定义事件的使用 效果: ?

1.7K30

七夕快到了,教你用python去表白!

父窗口小部件是示例窗口小部件,它是通过QWidget继承的 self.buttonOK.setFocusPolicy(QtCore.Qt.NoFocus)#按钮无焦点 # Qt::TabFocus 0x1...接受Tab键焦点 # Qt::ClickFocus 0x2 接受鼠标单击做焦点 # Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受Tab键和鼠标单击做焦点...接受Tab键焦点 # Qt::ClickFocus 0x2 接受鼠标单击做焦点 # Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受Tab键和鼠标单击做焦点...父窗口小部件是示例窗口小部件,它是通过QWidget继承的 self.buttonNO.setFocusPolicy(QtCore.Qt.NoFocus) # 按钮无焦点 # Qt::TabFocus...0x1 接受Tab键焦点 # Qt::ClickFocus 0x2 接受鼠标单击做焦点 # Qt::StrongFocus TabFocus | ClickFocus | 0x8 接受Tab键和鼠标单击做焦点

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PyQt 键盘事件和鼠标事件

    PyQt为事件处理提供了两种机制:高级的信号和槽机制,以及低级的事件处理程序。前者已经介绍过,后者也有涉及,比如我们曾重新实现过窗口部件的closeEvent()。...第二种重新实现event()事件处理程序 。因为在任何特殊的事件处理程序被调用前,都会调用event()。...重新实现这个方法,可以允许我们处理那些不能在某一特定事件处理程序(如对Tab键焦点转换行为的重新定义)中处理的事件,或者实现那些不存在明确事件处理程序的事件,比如QEvent.ToolBarChange...elif event.modifiers() & Qt.AltModifier: #Alt 键被按下 self.statusBar().showMessage('"Alt...QWidget.keyPressEvent(self, event) #留给基类处理 ''' 其它常用按键: Qt.Key_Escape

    6.5K20

    qt tabwidget切换_标签怎么在新窗口打开

    ,文字中可通过与符号(&)带一个快捷键字母,对应快捷键为:Alt+与符号后面字母 icon为选项卡栏显示的选项卡图标 返回值为新加选项卡在选项卡栏中的位置索引 注意: 如果在QTabWidget所在窗口...为了防止这种情况可以在更改之前将窗口的QWidget.updateselebled属性设置为False,在更改完成时将属性设置为True,使部件再次接收绘制事件。...,否则当前页保持不变 Qt–多页面切换组件 一.多页面切换组件 多页面的切换在我们日常的软件使用中是十分广泛的,有着很好的便捷性,下面一张图片展示了多页面的使用的便捷性 可以看到用鼠标点击不同的标题时会出现不同的页面内容...QTabWidget的使用方式–在Qt中的应用程序中创建QTabWidget的对象,将其他的QWiget对象加入该对象中(在QTabWidget对象中加入一个组件将生成一个新的页面,同时QTabWidget...对象每次只能加入一个QWiget对象),但是在实际的使用中每个页面会有多个的子组件,这时应该在工程中创建容器类型的组建对象,将多个子组件在容器对象中布局,最后将容器对象加入QTabWidget中生成新的页面

    3.8K30

    Qt 常用类 (9)—— QWidget

    值得一提的是 editFocus 属性,这是一个专门用于嵌入式系统的属性。因为嵌入式系统通常键盘较小,没有专门用于切换焦点的 Tab 键,所以上下方向键被用来切换焦点。...如果一个窗口部件设置 editFocus 属性为 true,则上下方向键就不再用于切换焦点,而是发送给这个窗口。...槽         在前面的介绍中已经提及了 QWidget 类的许多槽,这里将介绍其他常用的槽。        ...);   // 键按下   virtual void keyReleaseEvent(QKeyEvent *event);  // 键松开                这里通过  QKeyEvent...// 鼠标键按下   virtual void mouseReleaseEvent(QMouseEvent *event);                            // 鼠标键松开

    3.6K10

    【QT】Widget 控件核心属性

    英⽂原义是 “⼩部件”, 我们此处也把它翻译为 “控件” 。控件是构成⼀个图形化界⾯的基本要素. QWidget 核心属性 在 Qt 中, 使⽤ QWidget 类表⽰ “控件”....像按钮, 视图, 输⼊框, 滚动条等具体的控件类, 都是继承⾃QWidget;可以说, QWidget 中就包含了 Qt 整个控件体系中, 通⽤的部分....Qt::GlobalAtomics:部件的布局⽅向由全局原⼦性决定(PS 这个翻译其实有点尴尬. 其实就是根据应⽤程序中的其他 widget 布局⽅向确定的)....⽐如某个控件能否⽤⿏标选中或者能否通过 tab 键选中. Qt::FocusPolicy 是⼀个枚举类型....:控件可以通过Tab键和⿏标点击接收焦点 (默认值) Qt::WheelFocus : 类似于 Qt::StrongFocus , 同时控件也通过⿏标滚轮获取到焦点 (新增的选项, ⼀般很少使⽤).

    16110

    Qt 项目之虚拟键盘 V1.0

    最近做了一个虚拟键盘的小Demo,分享给大家。 一般我在做一个东西之前会上网查找资料,看下有几种实现的方式。在Qt下开发虚拟键盘总体上可分为两种方式——进程内部和进程外部。...在进程内部,虚拟键盘可以是一个QWidget小部件,显示键盘按钮,对用户按下的按键生成键盘事件,之后让具有焦点的可输入的部件响应键盘事件。...Qt上使用DBus作为IPC通讯方式,虚拟键盘被开发完成则是一个插件,需要放到Qt指定的目录下,Qt应用程序在使用虚拟键盘前需要注册一下,关于虚拟键盘和插件以后我们有机会会介绍的。...今天展示的是在进程内部开发虚拟键盘的方式。 我最终想要实现的是点击任何可输入部件键盘都可以弹出来,但是开发的过程中发现可输入部件没有在被点击后发出信号或事件,最后只好用窗体的鼠标事件来替代。...为方便阅读,使用的数据结构没有列出 KeyBoard::KeyBoard(QWidget *parent) : QWidget(parent) { QGridLayout *gridLayout

    3K30

    屏蔽Tab键切换控件焦点

    最新简单方法[2018.06.14更新] [QT]实现Tab键切换控件的两种方式及禁止Tab切换的简单方法: https://blog.csdn.net/humanking7/article/details.../80697667 ---- 原文 1.问题引出 Qt窗体中如果有QLineEdit或QPushbuttonL等输入控件,默认在窗体中按下Tab键会切换控件之间的焦点。...我采用事件处理器对该这些不需要响应切换焦点的控件进行Tab键的屏蔽。 ?...2.解决思路 如上图所示,窗体有3个QLineEdit控件,在窗体的构造函数中安装事件过滤器,然后重写eventFilter(QObject *obj, QEvent *event)函数 3....源码 3.1.安装事件过滤器 在窗体的构造函数中,安装事件过滤器 //构造函数 check_keyboard_mouse::check_keyboard_mouse(QWidget *parent)

    1.9K20

    Qt官方示例-摆动的文字

    该示例演示了如何使用QBasicTimer和timerEvent对小部件进行动画处理和使用QFontMetrics确定屏幕上文本的大小。 ? QBasicTimer是计时器的低级类。...}; Dialog类实现   Dialog构造函数中,我们创建一个摆动的窗口小部件以及line编辑,然后将这两个窗口小部件置于垂直布局中。...我们将QWidget子类化,并重新实现标准的paintEvent()和timerEvent()函数以绘制和更新窗口小部件。另外,我们实现了一个公共setText()插槽,用于设置窗口的文本。   ...WigglyWidget类的实现   在构造函数中,我们使用QPalette::Midlight颜色WigglyWidget窗口的背景比通常的背景略浅。...setFont为设置绘制背景的调色板中的画笔和字体大小。

    1.8K30

    【QT】QT事件处理

    事件处理 QT中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。...QT中,任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent()、mousePressEvent()等事件处理函数来处理特定部件的特定事件。...每个程序的main函数最后都会调用QApplication类的exec()函数,它会使QT应用程序进入到事件循环,使应用程序在运行的时候接收各种事件。...一旦有事件发生,QT便会构造一个相应的QEvent子类的对象来表示它,然后将它传递给QObject对象或子对象。 ---- 鼠标事件 对鼠标实现进行重写来实现你想要达到的功能。...m_startY:m_startY+1; } } else//没有按ctrl键,每一移动为一个步长 { //调整图标左上角位置到网格顶点顶点上

    1.6K10

    Python Qt GUI设计:5种事件处理机制(提升篇—3)

    有一种特殊情况是对Tab键的触发行为,event函数对Tab键的处理机制是把焦点从当前窗口控件的位置切换到Tab键次序中下一个窗口控件的位置,并返回True,而不是交给keyPressEvent函数处理...因此这里需要在event函数中对按下Tab键的处理逻辑重新改写,使它与键盘上普通的键没什么不同。...在2.1、重新实现事件函数例子中补充以下代码,实现重新定义: '''重新实现其他事件,适用于PyQt没有提供该事件的处理函数的情况,Tab键由于涉及焦点切换,不会传递给keyPressEvent...() == Qt.Key_Tab): self.key = "在event()中捕获Tab键" self.update() return...eventFilter中,在这个函数中我们可以抛弃或者修改这些事件,比如可以对自己感兴趣的事件使用自定义的事件处理机制,对其他事件使用默认的事件处理机制。

    2.3K30

    Qt开发实现字幕滚动效果

    QWidget::fontMetrics()函数返回一个QFontMetrics对象;可以用这个对象查询并获得与这个窗口部件字体相关的信息。...它使用fontMetrics()确定文本在水平方向上所需要的空间,并且在考虑offset值的同时,多次绘制文本,直到能够填充整个窗口部件的宽度为止。...通过在offset上加1来模拟移动,从而形成文本宽度的连续滚动。然后,它使用QWidget::scroll()把窗口部件的内容向左滚动一个像素。...这里也可以调用update()代替scrol(),但使用scroll()会更有效率,因为它只是简单地移动屏幕上已经存在的像素并且只对这个窗口部件的新显示区域(此时,只是一个1像素乘以宽度的像素条)产生一个绘制事件...我们也可以在Ticker的构造函数中完成startTimer()的调用,但是只有在窗口部件实际可见的时候,才有必要保存由Qt产生的定时器事件的那些资源。让资源合理利用。

    37920

    Qt官方示例-拖动图标

    拖动图标示例显示了如何在同一应用程序中的小部件之间以及不同应用程序之间拖放图像数据。   在使用拖放的许多情况下,用户开始从特定的窗口小部件拖放,并将有效负载拖放到另一个窗口小部件上。...在此示例中,我们将QLabel子类化以创建用作拖动源的标签,并将其放置在同时充当容器和放置站点的QWidget中。   另外,当发生拖放操作时,我们希望发送的不仅仅是图像。...DragWidget类的实现   DragWidget构造函数在小部件上设置一个属性,以确保被关闭时将其删除: DragWidget::DragWidget(QWidget *parent) :...->pos() - child->pos());   由于我们将发送图标的像素图数据以及图标小部件中有关用户单击的信息,因此我们构造了一个QByteArray并使用QDataStream打包了详细信息...为了实现互操作性,拖放操作使用MIME类型描述它们包含的数据。

    1.7K31

    Qt中国象棋一—— Qt 2D 绘图入门

    QPainter可以画在“绘图设备”上,如QWidget、QPixmap、QImage等。 重新实现QWidget::paintEvent() 可用于订制窗口部件,并且可以设计出自己想要的风格。...Qt中围绕着QGraphicsView、QGraphicsScene、QGraphicsItem类引入了一种全新的“图形视图”体系【了解概念即可,不作详细介绍】。——摘自C++ GUI Qt4编程。...一、坐标系统 在了解如何画出一个图形前,需要知道窗口部件的坐标系统。如图,左上角顶点是坐标原点(0,0),X轴向右为正,Y轴向下为正,默认每个像素占1×1大小的像素。...1)当窗口部件第一次显示时,系统会自动产生一个绘图事件 2)重新调整窗口部件大小 3)当窗口部件被其他部件遮挡,然后又再次显示出来时,就会对隐藏的区域产生一个重绘事件 void Widget::paintEvent...三、画文本与画矩形 这次是绘图逻辑分离出来,然后在paintEvent(QPaintEvent *event)中调用。

    1.8K10

    Qt键盘事件(一)——检测按键输入

    当有按键按下或者松开的时候,按键事件key event将会发送消息给QWidget。Key Event包含一个特殊的接收标记,标记接收者是否处理该按键事件。...另一方面,键盘上的每个键,都作为Qt的一个枚举成员,如下图(来源:Qt官方文档) 因此,可以在按键事件处理函数keyPressEvent中识别并在界面上打印出具体的按键。...04 实现 建立一个QKeyBoard的Qt Widget工程,在头文件中声明两个函数: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent...(QKeyEvent *event); 源文件中实现如下: void QKeyBoard::keyPressEvent(QKeyEvent *event){ switch(event->key())...Esc、Tab、Del、Enter、Space和4个方向键,其余键类似)。

    3.1K20

    初步学习Qt布局

    实现QWidget::event()来接收QEvent::LayoutRequest事件。 自定义布局管理 自定义布局的唯一方法是继承QLayout来完成自己布局管理器。...编写自定义布局类,必须定义以下内容: l 由布局控制的存放元素的数据结构。每个元素都是一个QLayoutItem。在这个例子中,我们将使用QList 。...调用QLayoutItem::sizeHint()等的代价比较大。在通过函数中,需要再次使用,最好将结果保存在本地变量中。...布局 布局是一个种高雅而灵活的方式来自动把子类窗体小部件组织到它们的容器中。每个窗体小部件通过sizeHint和sizePolicy属性向布局提供大小需求,布局根据可用空间进行分配。...窗体小部件的样式 样式(styles)绘制窗体小部件,并封装了GUI的外观和感觉。Qt的内置窗体小部件使用QStyle类完成几乎所有的绘制工作,以确保它们看来确实是一致的、本地窗体小部件。

    7.1K10

    Qt官方示例-标签对话框

    我们在不使用父窗口小部件的情况下构造了这些窗口中的每一个,因为选项卡窗口小部件会在将它们添加到父窗口小部件时使它们重新定位。   ...: setWindowTitle(tr("Tab Dialog")); }   每个选项卡都是QWidget的子类,并且仅提供构造函数。...GeneralTab类定义   GeneralTab窗口小部件定义很简单,因为我们只对在选项卡中显示窗口小部件的内容感兴趣: class GeneralTab : public QWidget {...为此,使用了各种小部件,这些小部件以垂直布局排列: GeneralTab::GeneralTab(const QFileInfo &fileInfo, QWidget *parent) : QWidget...&fileInfo, QWidget *parent = nullptr); }; PermissionsTab类实现   PermissionsTab显示有关文件访问信息的信息,并在以嵌套布局排列的小部件中显示文件许可权和所有者的详细信息

    1.4K10
    领券