1、Qt学习笔记3120012018/10/24 星期四遇到的问题1.问题1.1如何开启QtCreator的代码自动补全功能1.2qt parent表示父窗口为什么传入02.解决的办法2.1如何开启QtCreator的代码自动补全功能众所周知,在Qt Creator里面编程,如果没有自动代码补全功能,是一件灰常灰常痛苦的事情啊,下面,我们就把这个该死的代码补全功能找出来。步骤1. 打开Qt Creator(废话!囧!)步骤2. 在菜单栏上面选择工具(Tools),在下拉菜单中选择Options.步骤3. 找到环境,点击键盘,如下图黑圈中所示.步骤4. 在键盘快捷键的过滤器中键入:completet
2、his,(其实,只要键入comp就可以找到了),如图:步骤5. 注意到代码自动补全命令(CompleteThis)的快捷键是Ctrl+空格。然后我们按下图的顺序将快捷键换成Tab,Tab就可以了。特别注意的是,键位顺序里面的东东只要你点击键盘上相应的按钮就可以了,不用,也不能自己输入。比如说我这里的Tab,Tab就是连续在键盘上按了两次Tab键而成滴OK, 搞定, 收工!2.2 qt parent表示父窗口为什么传入0 parent参数指定了父窗口部件,如果是0,意味着该窗口没有父对象。当需要时可以指定父窗口,这样便于垃圾回收新的知识和方法1. Qt试用快捷键F2 跳转到函数定义(和Ctrl+
3、鼠标左键一样的效果)Ctrl+2 编辑模式Ctrl+3 图形模式Ctrl+4 调试模式Alt+0 显示或者隐藏侧边条,编辑模式下起作用(有时写的函数太长,屏幕不够大,就用这个)ESc 切换到编辑模式Alt+3 程序输出窗口Alt+4 编译输出窗口Ctrl+B 编译工程Ctrl+R 运行工程Ctrl+F 查找替换当前选中的内容,按下Ctrl+F,会列出所有和你选的内容一样的语句Ctrl+Shift+F查找内容Ctrl+I 自动对齐Ctrl+/ 注释行,取消注释行Ctrl+ 跳到代码块的头部Ctrl+ 跳到代码块的尾部Ctrl+Shift+ 展开代码块Ctrl+L 跳到某一行F5 开始调试Shif
4、t+F5 停止调试F9 设置和取消断点F10 单步前进F11 单步进入函数Shift + F11单步跳出函数2. setupUI(this)的意思 setupUi(this)是由.ui文件生成的类的构造函数,这个函数的作用是对界面进行初始化,它按照我们在Qt设计器里设计的样子把窗体画出来,把我们在Qt设计器里面定义的信号和槽建立起来。也可以说,setupUi 是我们画界面和写程序之间的桥梁3. qt写的程序中,最后的 return a.exec()做了哪些工作 程序进入消息循环,等待可能输入进行响应。把程序运行交给Qt处理,进入程序的循环状态4. SIGNAL和SOLT宏定义1. #defin
5、esignalspublic2. #defineslots/*nothing*/5. connect函数QObject:connect( &quit, SIGNAL(clicked(), &a, SLOT(quit() );connect也许是Qt中最重要的特征了。注意connect()是QObject中的一个静态函数。不要把这个函数和socket库中的connect()搞混了。 这一行在两个Qt对象(直接或间接继承QObject对象的对象)中建立了一种单向的连接。每一个Qt对象都有signals(发送消息)和slots(接收消息)。所有窗口部件都是Qt对象。它们继承QWidget,而QWid
6、get继承QObject。 这里quit的clicked()信号和a的quit()槽连接起来了,所以当这个按钮被按下的时候,这个程序就退出了。 6. 窗口部件的理解窗口部件就是用户程序的一个可视化元素。按钮、菜单、滚动条包括框架都是窗口部件。窗口部件还可以包含其他窗口部件。任意窗口部件都可以作为窗口。在使用QLable标签(lable),创建窗口部件的时候标签通常是隐藏的,这就运行我们先进行设置然后再显示它们,从而避免了闪烁现象。7. 布局管理器布局管理器就是一个能够对其所负责窗口部件的尺寸大小和位置进行设置的对象。主要有三个布局管理类:QHBoxLayout。在水平方向上排列窗口部件,从左到
7、右。QVBoxLayout。在竖直方向上排列窗口部件,从上到下。QGridLayout。把各个窗口部件排列在一个网格中。8. 布局自动设置父窗口有个程序QWidget *window = new QWidget;QSpinBox *spinBox = new QSpinBox;QSlider *slider = new QSlider(Qt:Horizontal);QSpinBox,QSlider这两个类都没有设置父窗口,但是为什么最后的布局系统是QWidget 是父窗口。原因是window-setLayout(layout);这个函数调用会在窗口上安装布局管理器(图8.1),从软件底层来说,这两个类会“自动重定义父对象”,它们会成为这个安装了布局的窗口部件的子对象。也正是因为这个原因,当创建一个需要放入某个布局中的窗口部件时,就没有必要为其显式地指定父对象了。 图8.19. 布局管理器自动为部件分配位置和大小尽管没有明确的设置任何一个窗口的大小和位置,但是QSpinBox,QSlider还是能够非常好的一个挨着一个显示。这是因为QHBoxLayout可根据负责的子对象的需要为它们分配所需的位置和大小。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1