本人介绍的是Qt 编程点滴,作为一名新手,我建议必须看一看。编程那些事,只有编程人员自己明白!所以推荐本文。

Qt 编程继续为大家讲解,还是接着文章Qt 编程点滴 初学者必看 (2),继续介绍,说编程那些细节。由于本话题是一节一节为大家介绍的,所以更多内容请看末尾编辑推荐。

Qt 编程点滴 初学者必看 (3)(qt编程指南)  第1张

静态成员变更量

  1. aa.h
  2. classAA
  3. {
  4. staticcharp[13];
  5. };
  6. aa.cpp
  7. charAA::p[13];

如果没在cpp中增加"char AA::p[13];",则编译时会提示"undefined reference to...."的错误

b.h接口中引用a.h接口,使用时必须加上

  1. include"a.h"
  2. include"b.h"

否则编译时会出现"如果没在cpp中增加"char AA::p[13];",则编译时会提示"单例模式singleton单元要最先初始化(#include放到最前面)

QWidget类以模式窗体显示:

  1. dailPage=newDailForm(0,tel);
  2. dailPage->setWindowModality(Qt::ApplicationModal);
  3. dailPage->show();

事件过滤写法:

其实可以通过重载QWidget::keyPressEvent()获得本类(假设是窗体)中的几乎所有键盘事件,但焦点在文本框上,就不属于窗体类啦,所以必须采用在窗体类中添加Event Filters:

  1. CustomerInfoDialog::CustomerInfoDialog(QWidget*parent)
  2. :QDialog(parent)
  3. {
  4. ...
  5. firstNameEdit->installEventFilter(this);
  6. lastNameEdit->installEventFilter(this);
  7. cityEdit->installEventFilter(this);
  8. phoneNumberEdit->installEventFilter(this);
  9. }

然后在eventFilter中处理相关键盘事件,通过target判断是否是文本框发生的键盘事件

  1. boolCustomerInfoDialog::eventFilter(QObject*target,QEvent*event)
  2. {
  3. if(target==firstNameEdit||target==lastNameEdit
  4. ||target==cityEdit||target==phoneNumberEdit){
  5. if(event->type()==QEvent::KeyPress){
  6. QKeyEvent*keyEvent=static_cast(event);
  7. if(keyEvent->key()==Qt::Key_Space){
  8. focusNextChild();
  9. returntrue;
  10. }
  11. }
  12. }
  13. returnQDialog::eventFilter(target,event);
  14. }

去掉窗体标题栏:

  1. setWindowFlags(Qt::FramelessWindowHint);
  2. ld.execannotfind-lSDL

处理:环境变量path加入"D:\QtDevelop\umpcapp\public\SDL-1.2.13\bin"

环境变量path的设置:

  1. D:\QtDevelop\umpcapp\public\STLport-5.1.3\bin;
  2. D:\MinGW\bin;
  3. D:\Qt\bin;
  4. D:\QtDevelop\umpcapp\public\SDL-1.2.13\bin;
  5. 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放在其它库的前面,下面的写法是正确的:

  1. INCLUDEPATH+=.\
  2. ../../public/STLport-5.1.3/stlport\###这句一定要放在前面
  3. ../../public/SDL-1.2.13/include\
  4. ../../public/common/include\
  5. ../../public/qextserialport-1.1\
  6. ../../public/boost-1.37.0/include

如果库的依赖关系(*.dll)出错,则应用程序会出现报内存的错误,最简单的方法就是把应用程序,所需要的库直接加入环境变量path中,以造成如果库更新,原来拷在应用程序下的库没有及时更新,环境变更path的设置例子:

  1. path+=D:\QtDevelop\umpcapp\public\boost-1.37.0\lib;
  2. D:\QtDevelop\umpcapp\public\qextserialport-1.1\build

上面对应的库为:

  1. boost_system-mgw34-mt-1_37.dll;boost_thread-mgw34-mt-1_37.dll;
  2. qextserialport.dll

编译成功后,debug下的exe文件不能生成,请检查.pro文件中,HEADERS与SOURCES参数配置是否有错误,比如把.h文件加入SOURCES参数中,把.cpp加入HEADERS参数中.

  1. include"a.h"
  2. include"b.h"
0

QWebKit中支持Flash播放的代码(Qt4.5才支持Flash)

  1. include"a.h"
  2. include"b.h"
1

vector 引用的单元:

  1. include"a.h"
  2. include"b.h"
2

注:br后要加一个空格;

Qss背景透明:

  1. include"a.h"
  2. include"b.h"
3

打开指定URL地址

  1. include"a.h"
  2. include"b.h"
4

可以打开任意URL

窗体置前:

  1. include"a.h"
  2. include"b.h"
5

窗体不显示在任务栏:

  1. include"a.h"
  2. include"b.h"
6

注:改变*.h的内容,编译时会没有编译过程,只有改变*.cpp才会进行编译;

小结:本文主要介绍了在Qt 窗体的使用,通过Qt 编程点滴介绍,也给自己提高了编程过程中需要注意的细节问题,由于本话题是一节一节为大家展现的,所以更多内容,请看编辑推荐。

转载请说明出处
知优网 » Qt 编程点滴 初学者必看 (3)(qt编程指南)

发表评论

您需要后才能发表评论