一步一步做QT界面设计Word文档下载推荐.docx
- 文档编号:21444065
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:322.65KB
一步一步做QT界面设计Word文档下载推荐.docx
《一步一步做QT界面设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《一步一步做QT界面设计Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
图1.2.2 标准菜单选择器
我们采用默认设置。
点击“Next”进入下一步。
打开如(图1.2.3)所示的界面。
图1.2.3 标准工具栏设置
采用默认设置。
打开如(图1.2.4)所示的界面
图1.2.4 向导完成界面
点击“Finish”关闭向导,这时向导已经完成了一个如(图1.2.5)所示的界面
图1.2.5 向导完成的界面
点击窗口的空白处然后在属性(properties)窗口中把“name”的内容由“Form1”改为“MainFrm”。
把“Caption”的内容由“Form1”改为“RdbView”。
下面加入QtabWidget和QlistView控件。
在设计器的左边是一个outLook风格的窗口,里面分栏列出了各个控件。
点击“Containers”栏。
在展开的“Containers”栏中选择“TabWidget”再用鼠标左键在已经建好的窗口中点击一下。
这样界面上就出现了一个“QTabWidget”控件。
用同样的方法加入一个“Views”栏中的“ListView”控件。
按下表修改“QTabWidget”的部分属性。
属性名称
属性内容
说明
name
tabTable
控件名称
sizePolicy
Expanding/Fixed/0/0
控件大小策略:
水平方向自动拉伸/垂直方向大小固定/水平方向空白大小为0/垂直方向空白大小为0
minimumsize
[0,0]
控件的最小长度和宽度都为0
按下表修改ListView的部分属性
DataList
设置完后,点击窗口的空白处,选中主窗口。
然后点击设计器菜单栏中的“Layout”-“LayoutVertically”为主界面加入垂直布局器。
这时候控件的大小会随着主界面大小的改变而改变。
第3节添加槽与连接
点击设计器的菜单栏中的“edit”-“Slots”打开如“图1.3.1”所示的对话框
图1.3.1 函数编辑窗口
点击“NewFunction”可以添加一个新的函数。
按下表添加函数:
Function
Returntype
Specifier
Access
Type
DataListRightClick(QListViewItem*pItem,constQPoint&
Pt)
void
virtual
public
slot
DataListSelChange(QListViewItem*pItem)
TabTableSelChange(QWidget*pWid)
ShowTableNameList()
表中的Function是函数名称和参数列表,Return是函数返回类型。
Specifier是函数的描述符。
Access是函数的访问类型。
Type是函数的类型,slot表示槽函数,function表示普通道函数。
槽函数可以接收信号来执行。
其它方面和普通函数完全一样。
Pt):
鼠标右击DataList控件时调用的函数。
pItem是右击的行,
Pt鼠标右击的位置
DataListSelChange(QListViewItem*pItem):
当DataList控件被选中的行改变时调用此函数
pItem当前补选中的行
TabTableSelChange(QWidget*pWid):
tabTable控件选中项改变时调用此函数
pWid当项被选中的项。
为了使槽函数能真正接收信号而工作。
必须把槽和信号进行连接。
点击菜单栏中的“edit”-“connections”打开如(图1.3.2)的对话框
图1.3.2 设置连接对话框
按下表建立新的连接
Sender
Signal
Receiver
currentChanger
MainFrm
TabTableSelChange
selectionChanged
DataListSelChange
rightButtonClicked
DataListRightClick
设置好连接后,一个程序界面就做完。
点击保存按钮,把设计好的界面保存到D:
\RdbView\ManFrm.ui中。
第4节建立工程
在文件夹D:
\RdbView\ 中新建两个文件:
MainWork.h和MainWork.cpp
其中MainWork.h的内容为
////////////////////////////////////////////
//MainWork.h
/////////////////////////////////////////////
#ifndefMAINWORK_H
#defineMAINWORK_H
#include<
qapplication.h>
#include<
qlistview.h>
qtabwidget.h>
qwidget.h>
qdockwindow.h>
qvariant.h>
qheader.h>
qlayout.h>
qtooltip.h>
qwhatsthis.h>
qaction.h>
qmenubar.h>
qpopupmenu.h>
qtoolbar.h>
qimage.h>
qpixmap.h>
#include"
MainFrm.h"
TabNameList.h"
TabMgr.h"
externMainFrm*g_pMainFrm;
externCTabNameList*g_TabNameList;
externCTabMgr*g_pTabMgr;
intmain(intargc,char*argv[]);
#endif
MainWork.cpp的内容为:
MainWork.cpp完成主函数的定义。
第10行定义了一个QApplication对像用来管理应用程序范围的资源。
Qapplication。
第11行申请了一个MainFrm对象。
MainFrm就是刚才用QT设计器设计的程序的主界面。
它的内容在下一章再作祥细介绍。
第12行设置MainFrm为主窗口。
第14行显示主窗口。
窗口是被隐藏创建的,在显示之前可以自定义窗口,而避免窗口闪烁。
第15行把应用程序的控制传递给QT。
这时,程序进入一种等待模式,等待用户的动作。
如鼠标点击,按键被按下等等。
现在我们就可以测试这个程序了。
点击“开始”-“运行”输入“cmd”打开命令行窗口。
转到D:
\RdbView目录下,请输入(蓝色字体部分):
D:
\RdbView>
Qmake–project
这时在D:
\RdbView目录下新产生一个RdbView.pro文件。
我们要在VC中使用QT所以在命令行窗口中再输入:
Qmake–tpvcRdbView.pro
\RdbView中产生一个新的文件“RdbView.vcproj“,用VC2003打开这个文件进行编译。
编译后运行可执行文件如(图1.4.1)所示
图1.4.1 程序运行界面
第二章QmainWindow
打开D:
\会发现有编译过程中新产生了MainFrm.h,MainFrm.cpp和MainFrm.ui.h三个文件。
这三个文件根据设计器所设计的界面自动产生。
特别要注意的是MainFrm.h,MainFrm.cpp这个文件会随着设计器对界面的修改,而重新生成。
“qmake“命令产生工程文件也会导致 MainFrm.h,MainFrm.cpp这两个文件重写。
因此应尽量避免手工修改这两个文件。
应该用设计器来添加函数和连接。
设计器所设计的槽和一般函数定义在MainFrm.ui.h文件中。
此文件可以写工修改,而事实上我们也正是这么做的。
第三章QdockWindow
在我们最初的设计中,主窗口的左边有一个QdockWindow但是我们使用设计器的时候并没有设计这个窗口。
我们将手工实现这个功能。
先给工程添加一个头文件TabNameList.h其内容如下
第8行到第12定义了一个结构用来保存表名称和表ID号的对应关系。
第13行和第14行以QlistView为基类定义了一个新类CTabNameList。
第16行为了使用信号和槽,在类定义的开始处必需有Q_OBJECT宏。
包含Q_OBJECT宏后,由qmake生成的makefile将会包含特定的规则来运行QT的元对象编译器(moc,meta-objectcompiler)。
第19行和第20行申明了构造函数和析构函数。
第31行表示其后的函数是槽,它可以和信号相连接。
为了实现CTabNameList的功能再为工程添加一个实现文件TabNameList.cpp.
先介绍构造函数的部分内容。
类CTabNameList继承自QlistView这个类,QlistView既可以实现树行结构也可以实列表结构。
在此处只需要实现树行结构。
为了实现树型结构先看一下函数
QlistViewItem:
:
QListViewItem(QListViewItem
*
parent,QListViewItem
after)
这是类QlistViewItem的构造函数。
QlistViewItem可以看作是QlistView的一个节点(如果是列表结构可以看作一行)。
Parent可以看作父节点。
After可以看作同一层次的前一个节点。
通过设置父节点和前一节点。
就可以建立如图1.1.1所示的树型结构。
在头文件中,定义了一个槽selectChanged要使这个槽能真正的工作,还必须使其和一个信号相连接。
只有和信号相连接的槽才能由信号来执行。
连接函数为:
connect(sender,SIGNAL(signal),receiver,SLOT(slot));
sender和receiver是指向QObject的指针,signal和是不带参数名称的函数签名。
SIGNAL()宏和SLOT宏实质上会把它们的参数转换成字符串。
信号和槽的连接有几个规则:
1一个信号可以被连接到多个槽
2多个信号可以连接到一个槽
3一个信号可以被连接到另外一个信号
4连接可以用disconnect移除
5信号和槽必须有相同的参数和顺序
6信号的参数多于槽的参数时,信号的多余的参数将被忽略。
connect(this,SIGNAL(currentChanged(QListViewItem*)),
this,SLOT(selectChanged(QListViewItem*)));
上面就是selectChanged槽和信号currentChanged信号相连的语句。
这里接收和发送的信号的都是CTabNameList对象本身。
currentChanged信号当用户改变了选择的节点的时候产生。
QListViewItem*是新选中的节点的指针。
为了显示树型结构,需要在主函数中增加几条语句。
首先在MainWork.h中包含头文件。
然再加入下面的黑体部分
再在MainWork.cpp文件中加入下面的黑体部分
MainWork.h"
MainFrm*g_pMainFrm;
;
CTabNameList*g_TabNameList;
intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
g_pMainFrm=newMainFrm;
app.setMainWidget(g_pMainFrm);
QDockWindow*pDocTabName=newQDockWindow(g_pMainFrm,("
TableName"
));
pDocTabName->
setResizeEnabled(TRUE);
setVerticalStretchable(TRUE);
g_pMainFrm->
addDockWindow(pDocTabName,Qt:
DockLeft);
setDockEnabled(pDocTabName,Qt:
DockTop,FALSE);
DockBottom,FALSE);
setCloseMode(QDockWindow:
Always);
g_TabNameList=newCTabNameList(pDocTabName);
setWidget(g_TabNameList);
show();
returnapp.exec();
}
QDockWindow是一个浮动窗口。
它的父窗口是主窗口。
pDocTabName->
setResizeEnabled(TRUE)使用浮动窗口可以改变大小。
浮动窗口在垂直方向可以随着父窗口大小的改变而改变。
g_pMainFrm->
放置浮动窗口到主窗口的左边。
浮动窗口不可以放置在主窗口的顶部和底部。
浮动窗口可以关闭。
g_TabNameList=newCTabNameList(pDocTabName);
申请个CTabNameList对象。
把g_TabNameList放置到浮动窗口中。
增加完后。
重新编译程序就到如(图3.1.1)所示的窗口。
图3.1.1 程序界面
第四章菜单栏
在第三章中为主界面增加了一个漂亮的浮动窗口。
但是如果关闭了浮动窗口,除了重启程序外无法再打开浮动窗口。
这一章我们介绍在菜单栏中增加一个菜单来实现浮动窗口的显示与隐藏。
用QT设计器打开D:
\RdbView\MainFrm.ui文件。
图4.1.1 添加View菜单
按(图4.1.1)所示增加一个新的菜单。
按下表修改ShowTabName菜单的属性
ShowTabNameList
text
ShowTabName
menuText
Show&
TabName
在第一章第三节添加了一个槽 ShowTableNameList()现在我们按下表把槽和信号相连接
Activated()
在头文件MainFrm.ui.h中包含MainWork.h文件然后修改ShowTableNameList()的实现
voidMainFrm:
if(((QDockWindow*)(g_TabNameList->
parent()))->
isShown())
{
((QDockWindow*)(g_TabNameList->
hide();
}
else
现在重新编程运行程序,点击“View”-“ShowTableName”试试看。
第五章QT在UNIX中的安装和使用
第1节QT在UNIX中的安装
1.改变目录到你相要的安装QT的目录下。
复制光盘中“X11”文件夹下的三个文件“qt-x11-free-3.2.1.tar.gz”到当前目录下。
Cp/cdrom/x11/qt-x11-free3.2.1.tar.gz.
假设你的光盘挂载在 /cdrom下;
2.解压缩此文件
Gunzipqt-x11-free-3.2.1.tar.z
Tarxfqt-x11-free-3.2.1.tar
解压完后当前目录下应该新建了一个文件夹“qt-x11-free-3.2.1”此文件夹中存放了解压后的文件。
此处要注意的是文件名“qt-x11-free-3.2.1.tar.z”很长有些系统可能对文件名进行截短,显示为”t-x11~1”解压缩的时候应该以系统显示的名称为准。
3.设置环境变量
QT所使用的环境变量根据shell的不同设置方法也不同。
这里只介绍在bash、ksh、zsh或者sh中设置QT所用的环境变量。
打开“.profile”文件。
在文件的结尾处加入下面语句
QTDIR=/usr/local/qt-x11-free-3.2.1
PATH=$QTDIR/bin:
$PATH
MANPATH=$QTDIR/doc/man:
$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:
$LD_LIBRARY_PATH
ExportQTDIRPATHMANPATHLD_LIBRARY_PATH
其中的“/usr/local/qt-x11-free-3.2.1”是指刚才解压过程中新生成的文件夹。
4.使用configure工具构建QT库和它提供的工具
把当前目录转到“/usr/local/qt-x11-free-3.2.1”,然后敲入“./configure”再根据提示输入“yes”就会产生makefile文件。
如果在产生makefile文件的过程中出现“gmake:
CC:
commandnotfound”这样的错误,请输入“./configure-platformsolaris-g++”试试。
5.“configure”运行成功后请输入 gmake 进行安装。
如果安装正确,在当前目录下的bin文件中应该有qmake命令。
第2节QT在UNIX中的使用
这里说明把一个在windows系统中做的QT软件转到UNIX中所要注意的一些细节问题和在UNIX中编译QT文件的方法。
1.在VS2003和VS2005中使用#pragmaonce开关防止多次编译,移值到UNIX中应该改成
#ifndefTABMGR_H
#defineTABMGR_H
//……………………//
2.用VS2003和VS2005自动生成的类会在资源文件中包含其头文件时会使用#include”./tabmgr.h” 这种形式在unix中编辑不通过,应该改成 #include”TabMgr.h”。
“TabMgr.h”为真实的文件名。
3.把当前目录转到工程所在的目录RdbView下输入:
产生工程文件。
如RdbView.pro;
4.输入:
QmakeRdbView.pro
产生makefile文件。
5.输入make或gmake进行编译产生可执行文件:
RdbView。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步一步 QT 界面设计