Qt学习笔记

Qt常用的是widget和mainwindow。messagebox就是临时弹出的提示框,widget和mainwindow比较类似,但是widget没有顶部的菜单栏。

  qt有自己独有的qmake,使用qmake时,qt的代码首先会被解释成常规c++,然后make编译到二进制。qt也支持cmake,区别就是生成pro文件还是make文件。选择qmake构建的话,如果需要网络等模块可以直接在pro文件里 +=network,数据库等也类似,选择cmake的话会稍微麻烦一些。

  在初始化以后,除了pro文件,还会默认生成界面文件widget.ui,main和widget头文件和源文件。qt的main文件在实例化窗口以后,直接返回QApplication对象的exec(),如果没有需求的话这里就不需要修改。

  以widget为例。widget继承自qwidget继承自qobject。默认情况下只有public和private。具体的实现在对应的widget.cpp中。

  qt的一个特色就是槽函数和信号机制,这个称得上qt的核心功能。在ui中哪怕是检测一次鼠标的click事件也是麻烦事,对于qt就是直接用槽函数封装了这些底层内容。简单来说,槽函数可以看作一个更强的回调函数,触发对应信号后,槽函数就会被执行。一个信号可以绑定多个槽函数,反过来也是。在实际使用中,一般情况下槽函数的触发和gui不会互相冲突。

  它的写法如下:
connect(sender,SIGNAL,receive,SLOT);  signal就是信号,接收者一般就是this,SLOT就是要执行的槽函数。方便记忆,可以理解成“谁发的,是什么,发给谁,怎么做”。具体写法也有宏、地址(函数指针)、lambda表达式三种。

 此外还有其他诸如AutoConnect等函数线程相关。

  要创建一个槽函数,首先在头文件里增加private slot这一项,声明函数,然后在对应cpp里编写代码。此外,在ui界面里,可以直接右键点击组件的“转到槽”,这样就会自动跳转并创建一个槽函数。这种情况下不需要声明slot,qt会自动寻找对应项。

  对应的,信号除了内置,也可以在头文件手动声明新的。它的声明方式类似函数,不需要返回值。但是。如果需要使用直接用emit关键字就可以释放信号。

 

  常用的一些ui组件:LineEdit,白色背景,单行文本显示,通过setText方法设置内容,通过Text()方法获取当前内容。

以它为例,一个lineEdit组件属于ui,所以调用方法是ui->lineEdit->setText();

label,背景跟随窗口,即标签。

 

其他的一些零碎知识:

qt里要向控制台输出,可以用流向qDebug()输出。

QObject自带了定时器,widget继承自qobject。如果有想要定时的事件触发,可以用widget自带的定时器,设置一个timerid=this->startTimer(),然后需要重写widget的timeevent()函数,在里面写上自己需要的功能。

 此外,也可以选择应用Qtimer这个头文件,生成qtimer对象,用starttime方法来定时。

posted @ 2025-06-09 11:22  namezhyp  阅读(28)  评论(0)    收藏  举报