QT定时器
第一种:QTObject
继承于QObject下的,可以直接通过this下的方法,即Widget类下的方法使用。
TIMEOUT为定义的常量定时的时间。定义如下:
#define TIMEOUT 1 * 1000
开始定时器
语法:startTimer(TIMEOUT),函数会返回一个定时器编号,为QTimer
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/02b1df7db070d1e506e96291005d4c34.png)
使用timerEvent函数,参数为QTimerEvent的对象event,判断触发时间的定时器的ID,从而执行相关行为。
![](https://i-blog.csdnimg.cn/blog_migrate/485906edcd27863d96210218a0e2cfad.png)
结束定时器
语法:语法:startTimer(定时器ID)。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/3704a431b888a9f4a8a0328f7b441b6b.png)
第二种:QTimer
使用之前需要在头文件中导入<QTimer>,定义一个timer对象,然后在Widget构造方法里创建一个QTimer类的对象。
![](https://i-blog.csdnimg.cn/blog_migrate/cd128f3e33c7519ef21cb583bbe9d86c.png)
开始定时器
语法:start(定时器定时的参数)。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/613ebe582448f2c1b5ff26f0dbb2e0b0.png)
结束定时器
语法:stop()。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/a0452f461206328ec94d7f07389ee034.png)
QT文件操作
菜单窗口开发
新建QMainWindow项目,在UI界面里拖入一个textEdit组件,然后点击外面的框架,在点击竖直排列,可以使文本与窗口框架适配。
![](https://i-blog.csdnimg.cn/blog_migrate/c75bb14ad324cd12eed9bc0a47392260.png)
点击窗口左上角可以更改菜单,在更改每个菜单按钮下的按钮功能时不能输入汉字,可以通过在其他地方输入中文后复制到这里,另外可以在每个按钮后面加个括号,括号里面使用取地址符加对应的汉字,如图所示,可以通过alt+对应的字母键激发该菜单按钮对应的事件。
![](https://i-blog.csdnimg.cn/blog_migrate/80560276c979ebe5ff08b87fabff49a7.png)
打开文件
使用之前导入在头文件导入QFileDialog类。
![](https://i-blog.csdnimg.cn/blog_migrate/c198ca7feaf4b363cd7867bc511417e2.png)
语法:QFileDialog::getOpenFileName(this,tr("Open File"),"路径","文件类型")
this是指打开窗口对应的父类窗口,第二个参数是指打开窗口的标题,第三个参数是指打开窗口时对应的目录,可以使用QcoreApplication: : applicationFilePath()方法获取默认的目录,第四个参数是指可以打开文件的类型。函数返回一个字符串类型的值,即打开文件的名字。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/b367914834a0e6fdca41480358ee7de7.png)
对话框提示
使用之前首先导入QMessageBox类。
![](https://i-blog.csdnimg.cn/blog_migrate/69eb03714fc416c439030afd03cd8dea.png)
语法:QMessageBox(this,"标题","提示内容")。
第一个参数是指提示窗口的父类窗口,第二个参数是指弹出窗口的标题,第三个参数是指提示的内容。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/5244ffd55e0a02825054e2432d5aafb7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9e0fbd937551638b21f35054b50b2339.png)
控制台输出调试信息
使用之前首先导入QDebug类。
![](https://i-blog.csdnimg.cn/blog_migrate/84819b537807e95c9871bc70d24afa80.png)
语法:qDebug() << fileName; fileName为调试输出的信息。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/3cd9828bfa38d381144493d9ec9bf685.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e7f959d07621a8821078cc179fe44394.png)
读取文件
![](https://i-blog.csdnimg.cn/blog_migrate/6fb5ec4f9c7250bc2ba888bf39670b6b.png)
保存文件
![](https://i-blog.csdnimg.cn/blog_migrate/6f86be3217b46ba3713b2bf1e15bf411.png)
事件实现文件保存
常见的QT事件类型
![](https://i-blog.csdnimg.cn/blog_migrate/ccc4dc1833b8b33443c936c1465a3af4.png)
QT将系统产生的消息转化为QT事件,QT事件被封装为对象,所有的QT事件均继承抽象类QEvent,用于描述程序内部或外部发生的动作,任意的@Ooject对象.都具备处理QT事件的能力。
监听键盘事件
首先导入QKeyEvent类。
![](https://i-blog.csdnimg.cn/blog_migrate/3e5f690fc90c0b4783e8ea8791dfe535.png)
判断键盘事件
使用modifiers()可以判断是否按下特殊按键,使用key()可以判断按下的普通按键。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/7ee87a81ad87c2b4b83a3af7f2503fb8.png)
监听鼠标事件
首先导入QMouseEvent类。
使用button()可以获取按下的鼠标按键。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/d2372916235763c38caeec7f3f576fbb.png)