零基础学QT编程
吴迪.2010.1 北京航空航天大学出版社
Qt资源
CSDN QT | http://bbs.csdn.net/forums/Qt/ |
QT编程网 | http://www.qtbcw.com/ |
编程论坛 | http://bbs.bccn.net/forum-253-1.html |
Qter | http://www.qter.org/ |
齐亮的个人主页 | http://www.qiliang.net |
Qt中文论坛 | http://www.qtcn.org |
虚函数就是人们希望在派生类中被重新定义的函数,当我们用基类的指针指向派生类的对象时,就能调用该派生类的虚函数。
.在基类中声明一个成员函数为虚函数后,在它的派生类中此成员函数也是虚函数,并且不需要在前面加关键字。
.当指针调用函数时,如果调用的是虚函数,则根据指针指向的对象访问函数;如果调用的是非虚函数,则指针的类型调用相应的函数;如果虚函数在派生类中没有定义,则会
自动调用基类中的函数定义。
每一个Windows应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口的消息。Windows将产生的消息依次放入消息队列中,而应用程序则通过消息循环不断从队列中取出消息,进行响应。
Windows要求注册窗口类,一经注册,就可以创建更多的同类窗口,无需再次注册
窗口类仅仅定义了窗口的特征,所有创建窗口的对象都用窗口类来创建窗口。程序必须在产生窗口前先利用API函数RegisterClass设定属性,这一个过程就是注册窗口类。在此之后,就可以使用函数CreateWindow创建窗口了
set命令 查看环境变量
- 全局注册表项位于“我的电脑\HEKY_LOCAL_MACHINE\software\microsoft\Windows\currentversion\run
- 用户的注册表项在“我的电脑\HKEY_CURRENT_USER\software\microsoft\Windows\currentversion\run
- 修改注册表在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon下面,增加DefaultUserName、DefaultPassword、AutoAdminLogon三项数据,分别填入用户名和密码,及数字1,其中,DefaultUserName,DefaultPassword的类型是字符串,AutoAdminLogon的类型是数字
sc命令 用于与服务控制管理器和服务进行通信的命令行程序. 命令sc可以用来增加、删除、设置、启动或停止服务
netstart命令 查看启动的服务列表;用“netstart服务名”命令启动服务;用“netstop服务名”停止服务。
Linux文件目录命名规范
◆/bin:Binary的缩写,存放用户的可执行程序,例如ls、cp和mv等,也包含其他的Shell,例如Bash和csh
◆/boot:操作系统启动时需要的文件,例如vmlinuz和initrd.imp。这些文件如果损坏,常会导致系统无法正常启动,因此最好不要任意改动
◆/dev:接口设备文件目录,例如hda表示第一块IDE硬盘
◆/etc:有关系统设置与管理的文件,例如password。目前保存在etc/目录中的文件都不是二进制文件,之前在此目录中的二进制文件都已移到/sbin或/bin目录
◆etc/X11:XWindow系统的设置目录
◆/home:一般用户的主目录或FTP站台目录
◆/lib:仅包含执行/bin和/sbin目录中的二进制文件时所需的共享类库(sharedlibrary)
◆/mnt:各项设备的文件挂载(Mount)点,例如光盘的默认挂载点是/mnt/cdrom,而/mnt/floppy是软驱的默认挂载点
◆/opt:这个目录通常提供一个空间,供较大型且固定的应用程序软件包保存文件使用,这样可以避免将文件分散到整个文件系统
◆/proc:目前系统内核与程序执行的信息,它和用ps命令看到的内容相同
◆/root:root管理员主目录,其他用户的主目录都位于/home目录中
◆/sbin:是SystemBinary的缩写,此目录存放的是系统启动时需要执行的程序,比如swapon
◆/usr:存放用户使用的系统命令,以及应用程序等信息
◆/usr/bin:存放用户可执行程序,例如finger和mdir等
◆/usr/include:保存供C语言加载的头文件
◆/usr/include/X11:保存供XWindow程序加载的头文件
◆/usr/lib:用户类库
◆/usr/lib/X11:X11的类库
◆/usr/local:提供自行安装的应用程序位置
◆/usr/sbin:存放非经常性使用的程序,例如showmount
◆/usr/src:保存程序的原始文件
◆/usr/X11R6/bin:存放XWindow系统的执行程序
◆/var:Variable的缩写,具有可变性质的相关程序目录,例如log、spool和named等
文件名称区分大小写
pwd 显示当前路径
chmod 变更文件和目录的属性
rm 删除目录或文件
su 切换用户登录到shell,常见从一般用户到root用户或者相反顺序
exec 执行程序,并且不返回到当前shell
ldd 查看应用程序使用的动态库
nm 查看程序或库的调试信息
objdump 查看程序或库的信息
env 查看环境变量
grep 从文件中查找字符串
find 查找文件
which 查找命令的可执行文件
uname 查看操作系统版本
ps 查看进程信息
top 查看系统资源信息
vmstat 查看系统虚拟机各资源信息
vi/vim 使用vi/vim编辑器
make 处理工程文件,生成可执行文件或库或其他资源文件
gdb/dbx 调试工具命令
strace/ltrace 跟踪程序调用的系统函数情况
file 查看文件的格式
fuser 查看进程使用了哪些文件
Shell在操作系统中的作用就如同是翻译员,它在用户和操作系统之间传递信息。
用户的命令可分为两大类:程序和Shell内置命令。
判断一个命令属于Shell的内置命令还是程序,可以用find命令来判断:如果find命令没有任何响应,则表示该命令为Shell内置命令;如果显示查找的结果,则该命令为程序。
其它的shell , 如DOS中的command.com和MicrosoftWindows的GUI(GraphicalUserInterface)
$ sudo bash
$echo $SHEL
$sudo chsh
Shell配置文件
⑴/etc/profile
这是系统最主要的Shell配置文件,也是用户登录时系统最先检查的文件。系统最重要的环境变量都定义在此,其中包括PATH、USER、LOGNAME、MAIL、HOSTNAME、HISTSIZE
和INPUTRC等。除此之外,这个文件也定义了ulimit,它的功能是限制每个Shell所能执行的程序数目,以免造成系统资源的过度消耗。而在文件的最后,它会检查并执行/etc/profile.d/*.sh的Script。
⑵~/.bash_profile
这个文件是每位用户的BASH环境配置文件,它存在于用户的主目录中。当系统执行/etc/profile后,就会接着读取此文件内的设置值。在此文件中,会定义USERNAME、BASH_ENV和PATH等环境变量。但是此处的PATH除了包含系统的$PATH变量外,还另外加入了用户的bin目录路径,而BASH_ENV变量则指出接下来系统要检查的文件名称。
⑶~/.bashrc
接下来系统会检查~/.bashrc文件,这个文件和前两个文件(/etc/profile和~/.bash_profile)最大的不同是,每次执行bash时,~/.bashrc都会被再次读取,也就是说变量会再次被设置;而/etc/profile和~/.bash_profile只有在登录时才进行读取。就是因为经常被重新读取,所以~/.bashrc文件只用来定义一些终端设置及Shell提示符号等,而不用来定义环境变量。
举例来说,如果远程的终端窗口(例如由微软平台以Telnet进行登录)无法浏览超过一页的信息或文件内容,可以在此文件中加入下面这行:
exportTERM=vt100 ~/.bashrc文件中值得注意的一行是“./etc/bashrc”,它利用一个小数点接着一个空格键再指向另外一个Script,表示同时执行此Script,并且采用Script的变量设置。
⑷~/.bash_login
如果~/.bash_profile文件不存在,则系统会转而读取这个文件内容。这是用户的登录文件,每次用户登录系统时,bash都会读取此文件,所以通常都会将登录后必须执行的命令放在这个文件中。
⑸~/.profile
如果~/.bash_profile和~/.bash_login两个文件都不存在,则会使用这个文件的设置内容。它的功能与~/.bash_profile完全相同。
⑹~/.bash_logout
这个文件是bash在注销系统前读取的文件。通常这个文件只包含clear命令,也就是先清除屏幕再注销。如果想在注销Shell前执行一些工作,例如清空缓冲区或执行备份,都可以在此文件中设置。
⑺~/.bash_history
这个文件中会记录用户曾经使用的命令历史,以供查阅。
常见的库命令
有两类库:静态的和共享的
静态库是包含目标文件的专门格式文件,这些文件称为模块或成员,是可重用的、预编译的代码。以特殊格式将它们与一张表格或映射图(把符号名链接到定义符号的成员)存储起来。映射图可加快编译和链接。静态库通常用扩展名.a命名,.a代表归档(archive)
共享库又被称作是动态库。与静态库类似的地方是,共享库也是文件,它包含其他目标文件或者指向其他目标文件的指针。称它们为共享库是因为在编译程序时,不需要将它们包含的代码链接到程序。相反,动态的链接器/装载器在运行时把共享库代码链接到程序中。
与静态库相比,共享库有几个优势。首先,它们需要的系统资源较少。因为共享库代码没有编译成二进制代码,而是在运行时从单个位置动态的链接和装载,所以它们使用更少的磁盘空间。它们使用的系统内存也较少,因为只需一次即可将它们装载到内存。最后,共享库简化了代码和系统维护。修复bug或添加特性后,用户只需获得已更新的库并且安装它即可。但对于静态库,必须重新编译使用该库的每个程序。如果想要构建一个在主机系统上不依靠任何内容的应用程序,或者在不确定开发环境的地方使用特殊的命令时,使用静态库也有一定的优势。但是通常建议使用共享库。
nm命令 列出目标或二进制文件中所有已编码的符号。使用它可查看程序调用了什么函数,或者查看库或目标文件是否提供了所需的函数
ar 可创建、修改或者提取档案。最常用于创建静态库(该库是包含一个或者多个目标文件的文件)。ar还创建并维护一个表,该表交叉引用符号名和定义符号名的成员。
ranlib 可精确的完成该任务,它在档案本身中存储该索引 给定一个用ar命令创建的档案,通过创建该档案的索引,可以加快档案的访问速度。
ldd打印file要求的共享库名。ldd两个最有用的选项是-d(它报告任何缺失的函数)和-r(它报告缺失的函数和缺失的数据对象)
ldconfig确定共享库所需的运行时链接,它位于/usr/lib和/lib中,在命令行上libs中指定,存储在/etc/ld.so.conf中。它与动态链接器/装载器ld.so一起工作,创建并维护到系统上最新版本可用共享库的链接。
动态链接器/装载器ld.so使用很多的环境变量来自定义和控制其行为。这些变量包括:
◆$LD_LIBRARY_PATH
该变量包含一个用冒号分隔开的目录列表,运行时在该表中查找共享库。它类似于$PATH环境变量。
◆$LD_PRELOAD
该变量是一个用空格分隔开的附加列表,其中包含用户指定在所有其他库之前装载的库。它用于有选择的覆盖其他共享库中的函数。ld.so还使用两个配置文件,其作用目的与那些环境变量平行:
◆/etc/ld.so.conf
包含一个目录列表,除了标准目录(/usr/lib和/lib,以及64位架构系统上的/lib64),连接器/装载器还应该在该列表的目录内搜索共享库。
◆/etc/ld.so.preload
包含$LD_PRELOAD环境变量基于磁盘的版本,它包括一个在执行程序之前装载的、用空格分开的共享库列表。
告诉vi您想要做什么?
可笑我昨晚一直在紧张vi不懂我的心.
◆a:添加命令。在它之后,可以从光标的右端开始输入文本。
◆i:插入命令。在它之后,可以从光标的左端开始输入文本。
◆按下Esc键反回到命令模式。 用下面的键或字母在文本中移动。记住使用Esc键,它始终可以回到命令模式。
◆方向键:在文件中上、下、左或右移动光标,一次一个字符。也可以使用退格键和空格键分别向左和向右移动。如果喜欢将手指放在键盘上,可使用h(左)、l(右)、j(下)、或k(上)来移动
◆w:将光标移动到下一个单词的开头。
◆b:将光标移动到前个单词的开头。
◆$(零):将光标移动到当前行的末尾。
◆H:将光标移动到屏幕的左上角(屏幕上的第一行)。
◆M:将光标移动到屏幕中间的第一个字符。
◆L:将光标移动到屏幕的左下角(屏幕上的最后一行)。
⑵其它编辑操作中唯一需要知道的是如何删除文本。
◆x:删除光标下的字符。
◆X:删除光标前字符。
◆dw:删除从当前字符开始直到当前单词末尾的所有字符。
◆d$:删除从当前字符开始直到当前行末尾的所有字符。
◆d0:删除从前一个字符开始直到当前行开头的所有字符。
⑶要结束编辑,可使用下列击键保存和退出文件。
◆ZZ:将当前修改保存到文件并退出vi。
◆:w:保存当前文件,但继续编辑。
◆:wq:与ZZ相同。
◆:q:退出当前文件。没有任何未保存的修改时该命令才会工作。
◆:q!:退出当前文件,并且不保存对文件进行的修改。
◆:g/Local:搜索单词Local,并且打印文件中它所出现的行(如果结果多于一个屏幕,则以管道形式将输出定向到more命令)。
◆:s/Local/s//Remote:在当前行上用Remote代替Local。
◆:g/Local/s//Remote:用Remote代替文件中每行第一次出现的Local。
◆:g/Local/s//Remote/g:用Remote代替文件中出现的所有Local。
◆:g/Local/s//Remote/gp:用Remote代替文件中出现所有的Local,然后打印没一行来查看进行的修改(如果输出多于一页,则以管道的形式将输出定向到more命令)
◆Esc:记住,Esc用于回到命令模式(我曾看到有人按下键盘上的所有键来尝试退出文件)。
◆u:按u键可以撤销之前做的修改。连续按u键可以撤销更前面的修改。
◆Ctrl+R:如果决定不再撤销前面的命令,可使用Ctrl+R进行恢复。本质上,这个命令取消所做的撤销操作。
◆CapsLock:小心不要错按了CapsLock键。处于大写状态时,在vi中输入的任何内容都有不同含义。输入大写字母时不会出现警告,但事情却开始变得不可思议。
◆:!命令:在vi中,可使用:!后跟命令名的方式来运行命令。例如,输入:!date查看当前的时间和日期,输入:!pwd查看当前目录,输入:!jobs查看后台是否有任务正在运行。命令运行完成时,按Enter键就可以返回继续编辑文件。甚至可以使用该技术从vi中启动shell(:!bash)、在该shell中运行几个命令,然后键入exit返回到vi(我建议转到shell前保存文件,防止回到vi后忘记保存)。
◆—INSERT:处于插入模式时,INSERT一词会出现在屏幕底部。
◆Ctrl+G:如果忘记了正在编辑的内容,按下这些键可在屏幕底部显示正在编辑的文件名和所在的行。它还显示文件的总行数、己浏览过的部分占该文件的百分比,以及光标所在的列号。这用来在下午停止工作一段时间后,帮助您确定编辑的位置。
搜索文本
◆/hello:向前搜索单词hello。
◆?goodbye:向后搜索单词goodbye。
◆/The.*foot:向前搜索包括单词The,同时在The之后的某处有单词foot的行。
◆?[pP]rint:向后搜索pring或Print。记住,Linux中是区分大小写的,所以可使用括号来搜索大小写不同的单词。
◆3dw:删除下面的3个单词。
◆5cl:修改下面的5个字母(即删除字母并进入输入模式)。
◆12j:向下移动12行。
vi编辑器在开始时很难学,可是一旦掌握了它,就永远不必使用鼠标或功能键了-一个键盘就可以快速高效的在文件中编辑和移动。
GCC是Linux平台下最常用的编译程序, GCC除了支持C语言外,还支持多种其他语言,例如C++、Ada、Java、Objective-C、FORTRAN、Pascal等。
对于GNU通用编译器来说,程序的编译要经历预处理、编译、汇编、连接四个阶段
- 在预处理阶段,输入的是C语言的源文件,通常为*.c。它们通常带有.h之类头文件的包含文件。这个阶段主要处理源文件中的#ifdef、#include和#define命令。
- 在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s
- 在汇编阶段,将输入的汇编文件*.s转换成机器语言*.o。
- 最后,在连接阶段将输入的机器代码文件*.s(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件
i find out ‘comic sans MS ‘ is very funny font , Gabriola Normal is also , and Haettenschweiler too , and ModernNormal , Monotype corsiva Italic , MV Boli Normal , most is Script , Segoe Print , and Segoe Script is very like ,
GCC
GCC是Linux平台下最常用的编译器
GCC追常用的两种模式:编译模式和编译连接模式。
有没有可从网上读取博客的客户端啊??这样我两地书写就可以同步了.也不是很难吧,
gcc 用法:
假设源程序文件名为test.c。
①无选项编译链接
用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
②选项-o
用法:#gcc test.c-o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
③选项-E
用法:#gcc-E test.c-o test.i 作用:将test.c预处理输出test.i文件。
④选项-S
用法:#gcc-S test.i
作用:将预处理输出文件test.i汇编成test.s文件。
⑤选项-c
用法:#gcc-c test.s
作用:将汇编输出文件test.s编译输出test.o文件。
⑥无选项链接
用法:#gcc test.o-o test
作用:将编译输出文件test.o链接成最终可执行文件test。
⑦选项-O
用法:#gcc-O1 test.c-o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时
间越长。
使用GDB
GDB是GNU开源组织发布的在Linux系统下用来调试C和C++程序的强力调试器
backtrace 显示函数调用的所有栈框架的踪迹和当前函数的参数值
break 设置一个断点,这个命令需要指定代码行或者函数名作为参数
clear 删除一个断点,这个命令需要指定代码行或者函数名作为参数
continue 在调试器停止的地方继续执行
Ctrl+C 在当前位置停止执行正在执行的程序,断点在当前行
disable 禁止断点功能,这个命令需要禁止的断点在断点列表索引值作为参数
enable 允许断点功能,这个命令需要禁止的断点在断点列表索引值作为参数
display 在断点停止的地方显式指定的表达式的值
finish 继续执行,直到当前函数返回
ignore 忽略某个断点制定的次数。例如:“ignore423”忽略断点4的23次运行,在第24此运行时中断
Info breakpoints 查看断点信息
Info display 查看设置的需要显式的表达式的信息
kill 终止当前debug进程
list 显示10行代码。如果没有提供参数给这个命令,则从当前行开始显示10行代码。如果提供了函数名作为参数,则从函数开头显示。如果提供代码行的编号作为参数,这一行作为开头显示
load 动态载入一个可执行文件到调试器
next 执行下一行的源代码的所有指令。如果是函数调用,则也当作一行源代码,执行到此函数返回
nexti 执行下一行源代码中的一条汇编指令
print 显式变量的值
ptype 显示变量的类型
return 强制从当前函数返回
run 从程序开始的地方执行
rwatch 指定一个变量,如果这个变量被读,则暂停程序运行,在调试器中显示信息,并等待下一个调试指令,参考rwatch和watch命令
set 设置变量的值。例如:“setnval=54”将把54保存到nval变量中
step 继续执行程序下一行源代码的所有指令。如果是调用函数,这个命令将进入函数的内部,单步执行函数中的代码
stepi 继续执行程序下一行源代码的汇编指令。如果是调用函数,这个命令将进入函数的内部,单步执行函数中的代码
txbreak 在当前函数的退出点上设置一个临时断点(只可使用一次)
undisplay 删除一个display设置的变量显示,这个命令需要将displaylist中的索引作为参数
watch 指定一个变量,如果这个变量被写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令,参考rwatch和watch命令
whatis 显示变量的值和类型
xbreak 在当前函数的退出点上设置一个断点
awatch 指定一个变量,如果这个变量被读写,则暂停程序运行,在调试器中显示信息,并等待下一个调试命令,参考rwatch和watch命令
QtGUI 设计基本流程
辑窗口部件模式 F3、编辑信号/槽模式 F4 、编辑伙伴模式和编辑Tab顺序模式,其中编辑伙伴模式不常用到。
Qt的参考文档也就区区3,100页 所以对于任何一名Qt开发人员来说,它都是一个基本工具。
[231 / 519] 书太厚.
我这个版本的 mingw32-make.exe 没有, 只有nmake 可以用, 难道我的是商业版本吗>
[258 / 519] 俺还是觉得, 时间过得太慢, 俺老得太快, 聪明得太迟 又后悔得太早.
对于布局管理来说是非常常见的用法,必须熟练掌握。其中setSizeConstraint()函数用于设置窗体的缩放模式,其默认取值是QLayout::SetDefaultConstraint。这里取参数值为Qlayout::SetFixedSize是为了使窗体的大小固定,不可经过鼠标拖动而改变大小;setSpacing()函数用于设置位于布局之中的窗口部件之间的间隔大小。
layout->setSizeConstraint(QLayout::SetFixedSize);
layout->setSpacing(6);
布局也是一种窗口部件,认识到这一点很关键。
如果程序中用到了Qt的核心机制(如信号/槽),不要忘记在类的声明处的第一行加入Q_OBJECT宏
要掌握判断和控制显隐对话框的方法;四是掌握定义窗口界面元素的方法(先定义,再设置其属性);五是了解布局管理
project-> build –> build directory 路径是哪个, 中间件删除重新编译 .
有点点乱, QT版本众多, 每个版本还配不同的VS , 真是不能乱写, 编译不出来 ,
石确: "夫宠而不骄,骄而能降,降而不憾,憾而能眕(zhěn)者,鲜矣。且夫贱妨贵,少陵长,远间亲,新间旧,小加大,淫破义,所谓六逆也。君义,臣行,父慈,子孝,兄爱,弟敬,所谓六顺也。去顺效逆,所以速祸也。君人者,将祸是务去,而速之,无乃不可乎?"公弗听。
我知道为什么MS忙不迭地推2010 2012 了, 因为08做得太傻了, 加SP1将近有5个G ,谁受得了
你先让我冷静冷静 .
所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。
对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。
一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性
尽量不要在头文件中包含另外的头文件 实在需要包含其它的头文件时,可以把它放在我们的类实现文件中。
使用tr()函数,这是为了日后使得应用程序可以被翻译为多种语言所必须的
◆应用程序主窗口框架的组成
◆常用的创建主窗口的方法和适用场合
◆完全使用代码创建主窗口的方法和步骤
◆使用QtDesigner和代码相结合创建主窗口的方法和步骤
◆中心窗口部件专题讲解
◆Qt4资源系统专题讲解
◆创建多文档应用程序的方法和步骤
[350 / 519] a little boring . ..\\\
Qt样式表与应用程序观感
在程序中使用.ui文件
Qt提供了两种引入和处理.ui文件的方法:一种是在编译时引入处理(CompileTimeFormProcessing),一种是在运行时引入处理(RunTimeFormProcessing)。前者又可以有3种做法:直接使用法、单继承法和多继承法;而后者是动态的加载.ui文件,这需要借助QtUiTools模块来完成。
现在我们一般不直接使用uic,当使用qmake时,uic会在需要时被qmake自动调用。
uic –o ui_calculatorform.h calculatorform.ui
防止头文件重复定义的卫哨,这是很好的编程规范, 值得我们学习.
“用到什么就包含什么,不用的就不包含”的做法的应用典范。一句#include<QtGui>或者#include<QtCore>,这固然省事,因为它们包含了这两个模块下的所有子模块的定义,但是这样一来,就降低了程序的编译速度,使得性能下降。
Qt编程的基本步骤,即先声明要使用到的窗口部件,然后实例化它们,再为它们设置属性和方法。
◆uic的使用方法
◆ui_yourformname.h文件的组成和功用
◆在编译时加入处理.ui文件的方法,包括直接使用法、单继承法和多继承法
◆在运行时加入处理.ui文件的方法,主要是动态加载的方法
◆这些方法的优缺点以及最佳使用场合
◆掌握信号与槽实现自动关联的方法
常用到的布局类有QHBoxLayout、QVBoxLayout、QGridLayout、QFormLayout这4种,分别是水平布局、垂直布局、栅格布局和表单布局。
布局中最常用的方法是addWidget()和addLayout(),addWidget()方法用于在布局中插入窗口部件,addLayout()用于在布局中插入子布局。
对于表单布局而言,向其中加入窗口部件最常用的方法是addRow()。
赵氏孤儿 :
晋献 文子 成室,晋大夫发 焉。张老 曰:“美哉轮焉! 美哉奂矣!歌于斯,哭于斯,聚国族于斯。”文子曰:“武也,得歌于斯,哭于斯,聚国族于斯,是 全要领 以从先大夫于九京也。”北面再拜稽首。君子谓之 善颂善祷。赵武用“全要领”来表明痛定思痛,祈祷不再发生刑戮之祸。祝辞与答辞都是紧密结合着赵氏的血泪痛史的 .
[473 / 519] 作者的书其实在第400页就早该结束了, 可是古今书是按页数来算钱的. 所以 , 我得将这后100页的图片粘贴 翻完翻完.
thakyou !
Ctrl+0组合键来显隐边栏
P486 程序调试实例 ;
信号与槽、元对象系统、事件模型是Qt机制的核心,
1.信号(signal)
其它GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应它们触发的动作,这个回调函数通常是一个指向某个函数的指针。在Qt中用信号和槽取代了上述机制。
信号和槽函数的声明一般位于头文件中,同时在类声明的开始位置必须加上Q_OBJECT语句,这条语句是不可缺少的,它将告诉编译器在编译之前必须先应用moc工具进行扩展。关键字signals指出随后开始信号的声明, siganls没有public、private、protected等属性,这点不同于slots。另外,signals、slots关键字是QT自己定义的,不是C++中的关键字。
从形式上讲,信号的声明与普通的C++函数是一样的,但是信号没有定义函数实现。另外,信号的返回类型都是void,而C++函数的返回值可以有丰富的类型 signal代码会由moc自动生成,moc将其转化为标准的C++语句,C++预处理器会认为自己处理的是标准C++源文件。所以大家不要在自己的C++实现文件实现signal。
2.槽(slot)
槽是普通的C++成员函数,可以被正常调用,不同之处是它们可以与信号(signal)相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有
缺省值。槽也和普通成员函数一样有访问权限。槽的访问权限决定了谁可以和它相连。通常,槽也分为三种类型,即publicslots、privateslots和protectedslots。
槽的声明也是在头文件中进行的。
3.信号与槽的关联
槽和普通的C++成员函数几乎是一样的-可以是虚函数;可以被重载;可以是共有的、保护的或是私有的,并且也可以被其它C++成员函数直接调用;还有,它们的参数可以是任意类型。唯一不同的是:槽还可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。
connect(sender,SIGNAL(signal),receiver,SLOT(slot));
元对象系统在Qt中主要有以下三部分构成:QObject类、Q_OBJECT宏和元对象编译器moc。
事件与信号的区别
qmake使用指南 简而言之,qmake是用来编译Qt应用程序的。
make命令
MITK.org
BlueBerry
(formerly known as openCherry)
A modular, cross-platform, C++ application framework
mitk.org 好多部分都不是开源的, 分割部分的代码就是 closed .
[已完结]
2013/8/6
零基础学QT编程的更多相关文章
- 《Windows编程零基础学》第零节
首先很开心申请到了这一个专栏<Windows编程零基础学> 这是第一篇文章,在这里,我将讲述一些基础的知识. 什么是Windows编程 所谓Windows编程就是在Windows平台上开发 ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- 【雕爷学编程】MicroPython动手做(06)——零基础学MaixPy之单目摄像头
配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小.工作电压低,提供单片UXGA摄像和影像处理器的所有功能.通过SCCB总线控制,可以输出整帧. ...
- 【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行
1.hello micropython #MicroPython动手做(04)——零基础学MaixPy之基本示例 #程序之一:hello micropython #MicroPython动手做(04) ...
- 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉
机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...
- 【雕爷学编程】MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240) ST7789驱动器芯片2.4寸LCD屏(24P 320X240)主要参数 1. 模块名称:液晶显示模块2. 型号:KD024C ...
- 【雕爷学编程】MicroPython动手做(08)——零基础学MaixPy之识别颜色
早上用百度搜了一下“颜色识别”,多少有了一点大致的概念,还是老办法,动手做,多实验,往前走,还请各位老师多多指点. OpenCV(百度百科)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运 ...
- [零基础学python]为什么要开设本栏目
这个栏目的名称叫做"零基础学Python". 如今网上已经有不少学习python的课程.当中也不乏精品.按理说,不缺少我这个基础类型的课程了.可是,我注意到一个问题.无论是课程还是 ...
随机推荐
- 关于for循环的一个小问题
有如下程序: package com.lk.B; public class Test5 { public static void main(String[] args) { // TODO Auto- ...
- Python基础入门-while循环示例
闲来无事! 想写一些基础的东西! 比如今天的while循环,,,,,, 很多python初学者,最开始学习python的时候,会被while循环给干蒙蔽! 那么今天,小编为大家讲解一些基础的实例,来帮 ...
- Canvas保存为图片
public static void GenerateCanvas(string imgSaveName, int canvasWidth, int canvasHeight, string imgD ...
- C语言编程学习开发的俄罗斯方块小游戏
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- CentOS目录与文件操作
pwd:查看当前目录 touch:创建文件 touch a.c ls:查看当前目录下文件,也可以ls /tmp查看tmp下的文件 rm:删除文件 rm a.c,也可以rm a.c -rf 强制删除 c ...
- kubernetes 1.3管中窥豹- RS(Replica Sets):the next-generation Replication Controller
前言 kubernates 1.3出了几个新的概念,其中包括deployments,Replica Sets,并且官网称之为是the next-generation Replication Contr ...
- 「BZOJ 3209」花神的数论题
Title Link 戳我 Title Solution 这道题可以运用组合数的思想啊,数位dp也可以,随便你怎么做,这里就讲一讲组合数的做法吧,要小于n,所以我们可以枚举n二进制下1的位置,在i-1 ...
- pycharm设置连接
https://blog.csdn.net/u013088062/article/details/50100121
- javascript正则表达式——元字符
元字符(Metacharacter)是拥有特殊含义的字符: 元字符 描述 (1) . 查找单个字符,除了换行和行结束符. 例子: <!DOCTYPE h ...
- JAVA学习必须掌握的框架,不看后悔
Web应用,最常见的研发语言是Java和PHP. 后端服务,最常见的研发语言是Java和C/C++. 大数据,最常见的研发语言是Java和Python. 可以说,Java是现阶段中国互联网公司中,覆盖 ...