添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
MyWidget :: MyWidget ( QWidget * parent ) : QWidget ( parent ) , ui ( new Ui :: MyWidget ) ui - > setupUi ( this ) ; this - > timeId = this - > startTimer ( 1000 ) ; //以毫秒为单位,每个1s触发一次 this - > timeId2 = this - > startTimer ( 500 ) ; //每个0.5s触发一次 //键盘事件,在终端输出键盘按下键 void MyWidget :: keyPressEvent ( QKeyEvent * e ) { qDebug ( ) << static_cast < char > ( e - > key ( ) ) ; //计时器事件,在exe文件上输出计时 void MyWidget :: timerEvent ( QTimerEvent * e ) { static int second = 0 ; if ( this - > timeId == e - > timerId ( ) ) { ui - > label - > setText ( QString ( "<center><h1>time1:%1</h1></center>" ) . arg ( second ++ ) ) ; // if(second==5)//在5s时,停止计时 // this->killTimer(timeId); else if ( this - > timeId2 == e - > timerId ( ) ) { ui - > label_2 - > setText ( QString ( "<center><h1>time2:%1</h1></center>" ) . arg ( second ++ ) ) ; // if(second==5)//在5s时,停止计时 // this->killTimer(timeId); MyWidget :: ~ MyWidget ( ) delete ui ;

效果:
在这里插入图片描述
在这里插入图片描述
3.关闭事件,点击右上角关闭,弹出对话框(是否关闭)
在这里插入图片描述
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
class MainWindow : public QMainWindow
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
protected:
    //关闭事件
    void closeEvent(QCloseEvent *);
private:
    Ui::MainWindow *ui;
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSerialPort/QSerialPort>
#include <QDebug>
#include <QMessageBox>//(对话框)你确定关闭吗?
#include <QCloseEvent>//关闭事件
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    ui->setupUi(this);
//关闭事件
void MainWindow::closeEvent(QCloseEvent *e){
    int ret=QMessageBox::question(this,"question","真的关闭吗?!(0.0)");
    if(ret==QMessageBox::Yes){
        //关闭窗口
        //处理关闭窗口事件,接受事件,事件就不会往下再传递
        e->accept();
    }else{
        //不关闭窗口
        //忽略事件,事件继续给 父组件 传递
        e->ignore();
MainWindow::~MainWindow()
    delete ui;
                    1.鼠标事件,在终端输出键盘按下键2.计时器事件,在exe文件上输出计时目录:mywidget.h#ifndef MYWIDGET_H#define MYWIDGET_H#include &lt;QWidget&gt;namespace Ui {class MyWidget;}class MyWidget : public QWidget{    Q_OBJECTpublic:    explicit MyWidget(QWidget *parent = 0);    
				
Qt程序关闭前,有时候需要弹出一个确认窗口,如何实现呢? 当鼠标点击窗口右上角的关闭按钮时,会触发一个窗口关闭事件(QCloseEvent),只需要覆写窗口类的closeEvent(QCloseEvent *event)函数,就可以对此事件进行相应处理 用到的头文件 #include<QMessageBox> #include<QCloseEvent> 编辑窗口类 class MainWindow : public QMainWindow Q_OBJECT
该实例程序使用Qt进行,windows的键盘后台监听,即使Qt桌面程序失去焦点在后台运行,也会捕捉到按键事件 这个程序使用windows的钩子(hook)实现的,Qt官方没有相关的实现 关于编译,我用的是Qt5.9.7 MinGW32位,我还用了Qt 5.6.3MinGW32位,也变过去了, 更换编译环境时候可能会报错,这些问题请百度 我遇到过声明的函数提示已经声明了,我就声明了一次,没办发, 把声明去了,就去可以正常便过去了 还有使用windows系统库的时候可能会链接不上,在*.pro文件里面添加windows系统库就好了 列如: LIBS += -Lc:/xx/xx -lUser32 不要想着别人的代码拿过来就能跑起来,先解决编译问题,这也是在不断地积累
有时候我们希望在关闭窗口之前做一些操作,例如保存缓存数据或向用户提示是否关闭窗口等等。 由于一般的窗口都是继承自QWidget, 那么我们可以通过覆盖QWidget中的虚函数closeEvent(QCloseEvent* event);来达到这个目的。 (1)首先添加依赖库: #include <QCloseEvent> 2)接着声明和定义closeEvent函数: a).h文件 protected: void closeEvent(QCloseEvent *event.
文章目录背景焦点focusfocusPolicykeypress和keyreleaseinstallEventFilter重写事件过滤器过滤组件的按键事件最终效果 Qt是一个跨平台开发的框架,可以实现一套代码多平台编译运行。但是有时候我们想实现的功能却和平台深度挂钩,比如本文想要描述的键盘钩子,也就是KeyBoard Hook。 在Windows平台开发时,如果我们需要监听键盘的操作或者屏蔽一些键盘操作时,比较容易的办法就是使用Windows 自带的API,包含SetWindowsHookEx、CallNe
  stm32里面有8个定时器,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在APB1总线上。其中TIM1&TIM8称为高级控制定时器(advanced control timer).他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 计算定时器的周期: void TIM4_Int_Init(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; void MyTableWidget::keyPressEvent(QKeyEvent *event) if (event->key() == Qt::Key_Delete) { // 处理删除键事件 // 这里可以编写删除选中行的逻辑 else if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { // 处理回车键事件 // 这里可以编写处理回车键的逻辑 else { // 其他键盘事件的处理逻辑 QTableWidget::keyPressEvent(event); 在这个示例中,我们重写了TableWidget的keyPressEvent()函数,并通过判断event->key()来处理不同的键盘事件。如果按下了删除键,可以编写删除选中行的逻辑;如果按下了回车键,可以编写处理回车键的逻辑;其他键盘事件则调用基类的keyPressEvent()函数进行默认处理。