本人介绍的是Qt 编程点滴,作为一名新手,我建议必须看一看。编程那些事,只有编程人员自己明白!所以推荐本文。
Qt 编程继续为大家讲解,还是接着文章Qt 编程点滴 初学者必看 (2),继续介绍,说编程那些细节。由于本话题是一节一节为大家介绍的,所以更多内容请看末尾编辑推荐。
静态成员变更量
- aa.h
- classAA
- {
- staticcharp[13];
- };
- aa.cpp
- charAA::p[13];
如果没在cpp中增加"char AA::p[13];",则编译时会提示"undefined reference to...."的错误
b.h接口中引用a.h接口,使用时必须加上
- include"a.h"
- include"b.h"
否则编译时会出现"如果没在cpp中增加"char AA::p[13];",则编译时会提示"单例模式singleton单元要最先初始化(#include放到最前面)
QWidget类以模式窗体显示:
- dailPage=newDailForm(0,tel);
- dailPage->setWindowModality(Qt::ApplicationModal);
- dailPage->show();
事件过滤写法:
其实可以通过重载QWidget::keyPressEvent()获得本类(假设是窗体)中的几乎所有键盘事件,但焦点在文本框上,就不属于窗体类啦,所以必须采用在窗体类中添加Event Filters:
- CustomerInfoDialog::CustomerInfoDialog(QWidget*parent)
- :QDialog(parent)
- {
- ...
- firstNameEdit->installEventFilter(this);
- lastNameEdit->installEventFilter(this);
- cityEdit->installEventFilter(this);
- phoneNumberEdit->installEventFilter(this);
- }
然后在eventFilter中处理相关键盘事件,通过target判断是否是文本框发生的键盘事件
- boolCustomerInfoDialog::eventFilter(QObject*target,QEvent*event)
- {
- if(target==firstNameEdit||target==lastNameEdit
- ||target==cityEdit||target==phoneNumberEdit){
- if(event->type()==QEvent::KeyPress){
- QKeyEvent*keyEvent=static_cast(event);
- if(keyEvent->key()==Qt::Key_Space){
- focusNextChild();
- returntrue;
- }
- }
- }
- returnQDialog::eventFilter(target,event);
- }
去掉窗体标题栏:
- setWindowFlags(Qt::FramelessWindowHint);
- ld.execannotfind-lSDL
处理:环境变量path加入"D:\QtDevelop\umpcapp\public\SDL-1.2.13\bin"
环境变量path的设置:
- D:\QtDevelop\umpcapp\public\STLport-5.1.3\bin;
- D:\MinGW\bin;
- D:\Qt\bin;
- D:\QtDevelop\umpcapp\public\SDL-1.2.13\bin;
- D:\QtDevelop\umpcapp\public\SDL_mixer-1.2.8\bin
注:STLport-5.1.3一定要放在MinGW前面,不然会出现"QImage: out of memory, returning null image"的错误;如果要用到STLport库,那么在配置.pro文件时,一定要记住把stlport放在其它库的前面,下面的写法是正确的:
- INCLUDEPATH+=.\
- ../../public/STLport-5.1.3/stlport\###这句一定要放在前面
- ../../public/SDL-1.2.13/include\
- ../../public/common/include\
- ../../public/qextserialport-1.1\
- ../../public/boost-1.37.0/include
如果库的依赖关系(*.dll)出错,则应用程序会出现报内存的错误,最简单的方法就是把应用程序,所需要的库直接加入环境变量path中,以造成如果库更新,原来拷在应用程序下的库没有及时更新,环境变更path的设置例子:
- path+=D:\QtDevelop\umpcapp\public\boost-1.37.0\lib;
- D:\QtDevelop\umpcapp\public\qextserialport-1.1\build
上面对应的库为:
- boost_system-mgw34-mt-1_37.dll;boost_thread-mgw34-mt-1_37.dll;
- qextserialport.dll
编译成功后,debug下的exe文件不能生成,请检查.pro文件中,HEADERS与SOURCES参数配置是否有错误,比如把.h文件加入SOURCES参数中,把.cpp加入HEADERS参数中.
0
- include"a.h"
- include"b.h"
QWebKit中支持Flash播放的代码(Qt4.5才支持Flash)
1
- include"a.h"
- include"b.h"
vector 引用的单元:
2
- include"a.h"
- include"b.h"
注:br后要加一个空格;
Qss背景透明:
3
- include"a.h"
- include"b.h"
打开指定URL地址
4
- include"a.h"
- include"b.h"
可以打开任意URL
窗体置前:
5
- include"a.h"
- include"b.h"
窗体不显示在任务栏:
6
- include"a.h"
- include"b.h"
注:改变*.h的内容,编译时会没有编译过程,只有改变*.cpp才会进行编译;
小结:本文主要介绍了在Qt 窗体的使用,通过Qt 编程点滴介绍,也给自己提高了编程过程中需要注意的细节问题,由于本话题是一节一节为大家展现的,所以更多内容,请看编辑推荐。
知优网 » Qt 编程点滴 初学者必看 (3)(qt编程指南)