QT 学习笔记一.docx

上传人:b****8 文档编号:10283279 上传时间:2023-02-09 格式:DOCX 页数:11 大小:46.01KB
下载 相关 举报
QT 学习笔记一.docx_第1页
第1页 / 共11页
QT 学习笔记一.docx_第2页
第2页 / 共11页
QT 学习笔记一.docx_第3页
第3页 / 共11页
QT 学习笔记一.docx_第4页
第4页 / 共11页
QT 学习笔记一.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

QT 学习笔记一.docx

《QT 学习笔记一.docx》由会员分享,可在线阅读,更多相关《QT 学习笔记一.docx(11页珍藏版)》请在冰豆网上搜索。

QT 学习笔记一.docx

QT学习笔记一

QT学习笔记一2011.2.14

1.类之间的调用

有A和B两个类。

它们分别有一个.h和.cpp文件。

若B的cpp文件中要用到A类中的对象,则需要在B.h文件中添加

#include“A.h”

……

private:

Ui:

:

MainWindow*ui;

Dialog2mydialog;

Aa;

像这样定义A类对象。

这样即可在B.cpp文件中直接使用a了。

2.信号的传递与接受

此处有两种方法

(1)选中控件,点击鼠标右键,选择“gotoslot”。

QT中slot是信号槽的意思。

这也是QT中独有的概念。

在弹出的对话框中选择需要此控件做的动作。

点击确定,即可在相应函数中添加内容。

(2)在设计框下选中“Signals&SlotEditor”选项卡中,添加信号。

Sender选择控件名称

Signal选择需要控件做的动作相应地函数

recieve包含动作控件的控件名称

Slot选择信号

在main.cpp中用

QApplicationtest(argc,argv);

MainWindoww;

Dialog2d;

if(d.exec()==QDialog:

:

Accepted)

{

w.show();

returntest.exec();

}

else

{

return0;

}

这样的方法判断并进行相应操作。

可参考:

Examples-Test

3.控件的一些常用操作(用户登录功能)

(1)将密码设为*

ui->pwdlineEdit->setEchoMode(QLineEdit:

:

Password);

(2)将textbox内容清空

ui->usrlineEdit->clear();

(3)光标放在某一个textbox上

ui->usrlineEdit->setFocus();

常用用户登录功能参考:

Examples-Test

4.如何通过QTCreator创建菜单,添加图标和背景图片

首先创建一个project.New->QT4GuiApplication.创建完毕后,点击XXX.ui,开始添加菜单:

双击左上角的”TypeHere”进行编辑,编辑完后回车(回车很重要),回车后就会出现下拉菜单,继续类似编辑。

Ok,菜单编辑完成了,界面的ActionEditor就会有你添加的内容,如下.

第二步,给菜单添加图标。

这里我们就需要创建资源文件了。

选择New->QTSourceFile(注意必须要有Pro文件与之匹配)。

创建完成后可以看到Porject里面多了一个资源文件:

XXX.qrc.选择资源文件,点击Add->AddPrefix1,后继续AddFiles.将你需要的ICO文件,图片都添加到资源文件中,添加完成后保存。

继续选择XXX.ui,双击ActionEditor的某项,点击”Icon”的”ChooseResource”选择你想要的图标,点击OK完成.效果如下(我都用的同一图标):

添加一张图片

第三步,给窗体加背景.单击右键->ChangestyleSheet,在弹出的”EditStyleSheet”中点击”AddSource”->backgroundimage”,选择想要添加的图片,点击OK,完成.同样其他的控件也可以通过同样的方式添加

2.23

5.如何将QTCreator的程序移植到ARM板上?

(1)确定Fedora系统上已安装QTEmbedded-4.7-arm。

安装后所在目录为/usr/local/Thllocher/;若尚未安装,则从友善之臂的光盘中将arm-qte-4.7.0-20101105.tar.gz拷贝到PC机上解压。

因之前所有linux相关都放在了/opt/FriendlyARM/mini6410目录下,故此也放在了此目录下。

解压缩。

运行./buildall命令,编译QTE-4.7

(一定要用arm-linux-g++编译器进行编译,参考Tiny6410开发指南)

(2)在QTCreator中建立交叉编译环境

参考Mini6410QT4和Qtopia编程开发指南;

P49:

4.2使用QtCreator工具开发第一个Qt4程序到mini6410上

(3)写驱动脚本

脚本名称命名为setqt4env,可以在vi编辑器中完成,也可在PC机上新建空文档编辑完成。

然后将其用U盘拷至ARM板的相应位置

脚本内容如下:

#!

/bin/sh

if[-e/etc/friendlyarm-ts-input.conf];then

./etc/friendlyarm-ts-input.conf

fi

true${TSLIB_TSDEVICE:

=/dev/touchscreen}

TSLIB_CONFFILE=/etc/ts.conf

exportTSLIB_TSDEVICE

exportTSLIB_CONFFILE

exportTSLIB_PLUGINDIR=/usr/lib/ts

exportTSLIB_CALIBFILE=/etc/pointercal

exportQWS_DISPLAY=:

1

exportLD_LIBRARY_PATH=/usr/local/lib:

$LD_LIBRARY_PATH

exportPATH=/bin:

/sbin:

/usr/bin/:

/usr/sbin:

/usr/local/bin

if[-c/dev/touchscreen];then

exportQWS_MOUSE_PROTO="TslibMouseMan:

/dev/input/mice"

if[!

-s/etc/pointercal];then

rm/etc/pointercal

/usr/bin/ts_calibrate

fi

else

exportQWS_MOUSE_PROTO="MouseMan:

/dev/input/mice"

fi

exportQWS_KEYBOARD=TTY:

/dev/tty1

exportHOME=/root

每次运行程序时,需要输入以下命令。

.setqt4env(.与s之间有空格)

./projectname

(4)对方的

6.给窗口设置滚动条

1.设置mainwindow为网格布局。

2.添加QScrollArea部件,此部件的widgetResizable值默认为true,若此部件本身没有设置布局,则将其设置为false;反之,则采取默认值。

3.将需要的部件添加至QscrollArea部件中即可。

如下为添加了滚动条后的窗口。

PICTURE:

/root/.tencent/qq//AppData/file//sendpix0.jpg

/root/.tencent/qq/AppData/file/sendpix0.jpg

7.vi编辑器的常用命令

vi编辑器有三种模式:

命令模式,编辑模式,末行模式

打开vi后首先是命令模式,用i,o,a等进入编辑模式,按esc退出编辑模式,回到命令模式。

在命令模式下输入:

wq表示保存退出,:

wq!

强制保存退出,:

w表示保存,:

wfile表示保存在另一个文件中:

q表示退出

在命令模式下可以用用ZZ,ZQ这些指令直接保存退出。

创建文件夹命令:

mkdirfilename1

删除文件夹:

umdirfilename

复制文件夹命令:

cp-rffilename1/path

8.开机自动运行QT4程序

修改/etc/init.d/rcS文件:

@#vi/etc/init.d/rcS

将/bin/qtopia&

修改为

.setqt4env

Uproject-qws&

重新启动开发板即可。

问题:

开机自动运行后,触摸板失效。

已解决。

解决方法:

(1)主要工作是编译在ARM板上运行的qt库。

下载:

qt-embedded-linux-opensource-src-4.5.3.tar.gz,tslib-1.4.tar.gz

(2)1>首先编译安装触摸屏驱动库tslib-1.4

./autogen.sh

./configure—prefix=/usr/local/qte-arm/tslib-1.4—host=arm-linuxac_cv_func_malloc_0_nonnull=yes

make

sudomakeinstall

这样就可以在/usr/local/qte-arm/tslib-1.4目录下看到相关的应用程序、共享库、配置文件等,这些库和配置文件都是要拷到ARM板的根文件系统中的。

2>编译qt-embedded-linux-opensource-src-4.5.3

./configure-prefix/usr/local/qte-arm\

-no-qt3support\

-qt-zlib\

-qt-libtiff\

-qt-libpng\

-qt-libmng\

-qt-libjpeg\

-makelibs\

-nomakeexamples\(不编译例子程序和文档)

-nomakedemos\

-nomakedocs\

-no-nis\

-no-cups\

-no-iconv\

-xplatformqws/linux-arm-g++\

-embeddedarm\

-little-endian\

-qt-freetype\

-depths8,16,24,32\

-qt-gfx-linuxfb\

-no-gfx-transformed\

-no-gfx-qvfb\

-no-gfx-vnc\

-no-gfx-multiscreen\

-qt-kbd-usb\

-qt-kbd-tty\

-qt-mouse-pc\

-no-glib\

-qt-mouse-tslib-I/usr/local/qte-arm/tslib/build/include-L/usr/local/qte-arm/tslib/build/lib

编译选项-qt-mouse-tslib需要用到触摸屏功能的动态库,所以得把之前编译安装的tslib库包含进来。

make

makeinstall

这样qt/E的编译工作完成,主要是得到了qt程序在arm板上运行所需要的库文件,以及用于arm平台的qmake,moc,uic等工具。

3>拷贝相关文件到ARM根文件系统

拷贝/usr/local/qte-arm/tslib整个目录到arm板根文件系统root_nfs/下;

拷贝/usr/local/qte-arm/lib/下所有库文件到root_nfs/opt/qt/lib目录下,你可能不需要全部的库文件,可根据需要选择

4>设置环境变量和配置文件

首先设置tslib的配置文件 geditroot_nfs/tslib/build/etc/ts.conf

module_rawinput

modulepthrespmin=1

modulevariancedelta=30

moduledejitterdelta=100

modulelinear

 然后设置qt及tslib的环境变量:

geditroot_nfs/etc/profile

在最后加入:

exportQTDIR=/opt/qt

exportT_ROOT=/tslib/build

exportPATH=$T_ROOT/bin:

$PATH

exportLD_LIBRARY_PATH=$T_ROOT/lib:

$QTDIR/lib

exportTSLIB_CONSOLEDEVICE=none

exportTSLIB_FBDEVICE=/dev/fb0

exportTSLIB_TSDEVICE=/dev/input/event0

exportTSLIB_PLUGINDIR=$T_ROOT/lib/ts

exportTSLIB_CONFFILE=$T_ROOT/etc/ts.conf

exportTSLIB_CALIBFILE=/etc/pointercal

exportQWS_KEYBOARD=USB:

/dev/input/event1

exportQWS_MOUSE_PROTO=Tslib:

/dev/input/event0

exportQWS_DISPLAY=LinuxFb:

mmWidth45:

mmHeight60:

0

exportQWS_SIZE=272x480

重启开发板,移植完成!

注意,在开发板上运行qt程序要加-qws选项,从而让程序以Server模式运行。

(3)

9.点击按钮切换页面

选中按钮,右击鼠标,选择“gotosolt”,再选择需要按钮做出的响应函数,此处已clicked为例。

点击确定之后,会在.cpp文件中生成自动生成函数,将需要的操作内容在此函数中编写。

参考代码如下:

voidMainWindow:

:

on_inteligencedrive_clicked()

{

QObject:

:

connect(ui->inteligencedrive,SIGNAL(clicked()),

this,SLOT(changetointeldrivepage()));

}//当inteligencedrive这个按钮clicked的时候,会发出clicked的信号,然后调用槽函数changetointeldrivepage(),在槽函数中可以编写哪个部件来响应这个clicked事件及的响应部件的相应动作

槽,其实就是C++中函数的意思,自己在.h文件中声明(定义)这个槽,然后在.cpp文件中区实现这个槽,来达到将信号与响应部件间的连接。

槽只是一个被调用的过程。

如,在.h中这样声明一个槽:

voidchangetointeldrivepage();

在.cpp中的实现代码如下:

voidMainWindow:

:

changetointeldrivepage()

{

//stackedWidget的页数设置时是从0开始算起的。

ui->stackedWidget->setCurrentIndex(3);

}

在这个槽函数中响应的部件是stackedWdget,做出的动作是切换到第4个页面。

至于函数中写的是3,这里为何说是第4个呢?

请看代码中的注释。

至此,通过点击按钮来达到切换页面的效果就达到了。

注意:

1.槽的自定义和实现及调用。

2.stackedWidget的页数设置时是从0开始算起的。

页面成果图:

2011-3-22

1.关于arm下字体大小不一的问题

解决方法:

(1)要下载arm下可用的中文显示字体,一般用wenquanyi的就可以,也比较多。

用Wenquanyi_160_50.qpf文件居多。

50表示正常体,若是75则表示是黑体。

(2)将其放在arm下字体库中。

具体哪个目录要试过才知道。

放在:

/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib/fonts

目录下。

具体的arm板目录可能有所不同。

(3)在工程中的main.cpp文件中做字体设置。

且要在定义mainwindow之前设置好,否则三级菜单(内容)中的字体依然会有字体大小不一的问题。

Qfontfont(“wenquanyi”,6);

a.setFont(font);

2.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1