QT软件开发实验指导书.docx

上传人:b****2 文档编号:2311959 上传时间:2023-05-03 格式:DOCX 页数:48 大小:501.27KB
下载 相关 举报
QT软件开发实验指导书.docx_第1页
第1页 / 共48页
QT软件开发实验指导书.docx_第2页
第2页 / 共48页
QT软件开发实验指导书.docx_第3页
第3页 / 共48页
QT软件开发实验指导书.docx_第4页
第4页 / 共48页
QT软件开发实验指导书.docx_第5页
第5页 / 共48页
QT软件开发实验指导书.docx_第6页
第6页 / 共48页
QT软件开发实验指导书.docx_第7页
第7页 / 共48页
QT软件开发实验指导书.docx_第8页
第8页 / 共48页
QT软件开发实验指导书.docx_第9页
第9页 / 共48页
QT软件开发实验指导书.docx_第10页
第10页 / 共48页
QT软件开发实验指导书.docx_第11页
第11页 / 共48页
QT软件开发实验指导书.docx_第12页
第12页 / 共48页
QT软件开发实验指导书.docx_第13页
第13页 / 共48页
QT软件开发实验指导书.docx_第14页
第14页 / 共48页
QT软件开发实验指导书.docx_第15页
第15页 / 共48页
QT软件开发实验指导书.docx_第16页
第16页 / 共48页
QT软件开发实验指导书.docx_第17页
第17页 / 共48页
QT软件开发实验指导书.docx_第18页
第18页 / 共48页
QT软件开发实验指导书.docx_第19页
第19页 / 共48页
QT软件开发实验指导书.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

QT软件开发实验指导书.docx

《QT软件开发实验指导书.docx》由会员分享,可在线阅读,更多相关《QT软件开发实验指导书.docx(48页珍藏版)》请在冰点文库上搜索。

QT软件开发实验指导书.docx

QT软件开发实验指导书

 

QT软件开发

实验指导书

 

软件学院网络工程系

包晗

 

实验内容

实验一熟悉QT环境

【实验类型】验证性

【实验要求】必做

【实验目的】

1.了解QTSDK的下载、配置、使用。

2.熟悉开发工具QTCreator、QTDesigner的使用。

3.熟悉QT程序的基本框架。

【实验内容】

一、首先从网络上下载Qtsdk

下载地址:

下载最新版本:

qt-sdk-win-opensource-2010.03.exe。

二、点击运行QtCreator,首先出现欢迎界面,如图1.1所示。

图1.1

GUI用户界面设计(QtDesigner)界面如图1.2所示。

图1.2

三、第一个程序:

当用户在文本框里输入一个圆的半径后,点击按钮,界面上的一个标签可以显示计算后的圆的面积值。

运行效果如图1.3所示。

图1.3

参考步骤如下:

(1)单击运行QtCreator,进入欢迎界面如图1.1所示。

单击“File”“NewFileorProject...”,创建一个新的工程,如图1.4所示。

图1.4

(2)因为需要建立一个Gui项目,所以选择“Qt4GuiApplication”,单击“OK”按钮,进入下一步。

图1.5

(3)选择保存项目的路径以及定义自己项目的名字。

注意,保存项目的路径中不能有中文字。

图1.6

(4)根据实际需要,选择一个“Baseclass(基类)”。

这里选择QDialog对话框类作为基类,这时“Classname”、“Headerfile”、“Sourcefile”以及“Formfile”都出现默认的文件名。

选中“Generateform”复选框,表示需要用自带的界面设计器来设计界面,否则需要用代码来完成界面的设计。

图1.7

(5)单击“Finish”按钮完成创建,则相应的文件自动加载到文件列表中,这时程序自动进入到QtDesigner组件设计界面,根据题目要求完成界面的设计。

(6)修改各控件的属性,如图1.8

Class

text

objectName

QLabel

半径:

radiusLabel

QLineEdit

 

radiusLineEdit

QLabel

面积:

areaLabel_1

QLabel

 

areaLabel_2

QPushButton

计算

countBtn

图1.8

修改areaLabel_2的“frameShape”为Panel、“frameShadow”为Sunken

 

图1.9

(6)运行检查一下界面效果是否如预期,没有问题则开始编写事件,即槽函数。

右击“计算”按钮,选择“Gotoslot...”,如图1.10所示。

在弹出的对话框中选择clicked()信号,如图1.11所示。

 

图1.10图1.11

【参考程序】

dialog.h

#ifndefDIALOG_H

#defineDIALOG_H

#include

namespaceUi{

classDialog;}

classDialog:

publicQDialog{

Q_OBJECT

public:

Dialog(QWidget*parent=0);

~Dialog();

private:

Ui:

:

Dialog*ui;

privateslots:

//voidon_radiusLineEdit_textChanged(QString);

voidon_countBtn_clicked();

};

#endif//DIALOG_H

dialog.cpp

#include"dialog.h"

#include"ui_dialog.h"

conststaticdoublePI=3.1416;

Dialog:

:

Dialog(QWidget*parent):

QDialog(parent),

ui(newUi:

:

Dialog)

{ui->setupUi(this);

}

Dialog:

:

~Dialog()

{deleteui;

}

voidDialog:

:

on_countBtn_clicked()

{

boolok;

QStringtempStr;

QStringvalueStr=ui->radiusLineEdit->text();

intvalueInt=valueStr.toInt(&ok);

doublearea=valueInt*valueInt*PI;//计算圆面积

ui->areaLabel_2->setText(tempStr.setNum(area));

}

【思考题】

1.如果把响应事件的组件换成文本框,该如何修改代码?

2.参考书中代码,使用纯代码方式重新实现该程序。

实验二QT常用类和控件

【实验类型】验证性

【实验要求】必做

【实验目的】

1.了解分割窗口QSplitter类的使用。

2.了解停靠窗口QDockWidget类的使用。

3.了解界面布局的使用方法。

【实验内容】

实验题1.完成书中3.5.9小综合例子。

实验题2.实现一个分割窗口,整个对话框由3个窗口组成,各窗口之间的大小可随意拖动改变,效果如图2.1所示。

图2.1

【参考程序】

intmain(intargc,char*argv[])

{

QApplicationa(argc,argv);

QFontfont("ZYSong18030",12);

a.setFont(font);

QTextCodec:

:

setCodecForTr(QTextCodec:

:

codecForLocale());

QSplitter*splitterMain=newQSplitter(Qt:

:

Horizontal,0);

QTextEdit*textLeft=newQTextEdit(QObject:

:

tr("LeftWidget"),splitterMain);

textLeft->setAlignment(Qt:

:

AlignCenter);

//右部分割窗口

QSplitter*splitterRight=newQSplitter(Qt:

:

Vertical,splitterMain);

splitterRight->setOpaqueResize(false);

QTextEdit*textUp=newQTextEdit(QObject:

:

tr("TopWidget"),splitterRight);

textUp->setAlignment(Qt:

:

AlignCenter);

QTextEdit*textBottom=newQTextEdit(QObject:

:

tr("BottomWidget"),splitterRight);

textBottom->setAlignment(Qt:

:

AlignCenter);

splitterMain->setStretchFactor(1,1);

splitterMain->setWindowTitle(QObject:

:

tr("Splitter"));

splitterMain->show();

//MainWindoww;

//w.show();

returna.exec();

}

实验题3.实现一个停靠窗口QDockWidget类,窗口1只可在主窗口的左边和右边停靠;窗口2只可在浮动和右部停靠两种状态间切换,并且不可移动;窗口3可实现停靠窗口的各个状态。

效果如图2.2所示。

 

图2.2

【参考程序】

DockWindows:

:

DockWindows(QWidget*parent)

:

QMainWindow(parent)

{

setWindowTitle(tr("DockWindows"));//设置主窗口的标题栏文字

QTextEdit*te=newQTextEdit(this);//定义一个QTextEdit对象作为主窗口

te->setText(tr("MainWindow"));

te->setAlignment(Qt:

:

AlignCenter);

setCentralWidget(te);//将此编辑框设为主窗口的中央窗体

//停靠窗口1

QDockWidget*dock=newQDockWidget(tr("DockWindow1"),this);

dock->setFeatures(QDockWidget:

:

DockWidgetMovable);//可移动

dock->setAllowedAreas(Qt:

:

LeftDockWidgetArea|Qt:

:

RightDockWidgetArea);

QTextEdit*te1=newQTextEdit();

te1->setText(tr("Window1,Thedockwidgetcanbemovedbetweendocksbytheuser"""));

dock->setWidget(te1);

addDockWidget(Qt:

:

RightDockWidgetArea,dock);

//停靠窗口2

dock=newQDockWidget(tr("DockWindow2"),this);

dock->setFeatures(QDockWidget:

:

DockWidgetClosable|QDockWidget:

:

DockWidgetFloatable);//可浮动、可关闭

QTextEdit*te2=newQTextEdit();

te2->setText(tr("Window2,Thedockwidgetcanbedetachedfromthemainwindow,""andfloatedasanindependentwindow,andcanbeclosed"));

dock->setWidget(te2);

addDockWidget(Qt:

:

RightDockWidgetArea,dock);

//停靠窗口3

dock=newQDockWidget(tr("DockWindow3"),this);

dock->setFeatures(QDockWidget:

:

AllDockWidgetFeatures);//全部特性

QTextEdit*te3=newQTextEdit();

te3->setText(tr("Window3,Thedockwidgetcanbeclosed,moved,andfloated"));

dock->setWidget(te3);

addDockWidget(Qt:

:

RightDockWidgetArea,dock);

}

 

实验三基本对话框

【实验类型】设计性

【实验要求】必做

【实验目的】

1.掌握标准文件对话框,标准颜色对话框,标准字体对话框,标准输入对话框,消息对话框的使用步骤。

2.了解QToolBox类的使用方法。

【实验内容】

实验题1.创建一个无ui界面的工程dialogExample,为类起名为dialog,类中实现文件对话框、颜色对话框、字体对话框;添加一个c++类,名为inputdlg,实现标准字符串输入对话框、条目选择对话框、int类型输入对话框、double类型输入对话框,分别代表一个学生的姓名、性别、年龄、成绩;添加一个c++类,名为msgboxdlg,实现Question消息框、Information消息框、Warning消息框、Critical消息框、About(关于)消息框、About(关于)Qt消息框。

实验题2.使用QToolBox类实现一个模拟QQ的界面,要求有三个组:

我的好友、陌生人和黑名单,每个组添加三个成员。

【参考程序】

Drawer:

:

Drawer(QWidget*parent,Qt:

:

WindowFlagsf)

:

QToolBox(parent,f)

{

setWindowTitle(tr("MyQQ"));//设置主窗体的标题

toolBtn1_1=newQToolButton;

toolBtn1_1->setText(tr("张三"));

toolBtn1_1->setIcon(QPixmap("11.png"));

toolBtn1_1->setIconSize(QPixmap("11.png").size());

toolBtn1_1->setAutoRaise(TRUE);

toolBtn1_1->setToolButtonStyle(Qt:

:

ToolButtonTextBesideIcon);

……

QGroupBox*groupBox1=newQGroupBox;

QVBoxLayout*layout1=newQVBoxLayout(groupBox1);//(groupBox1);

layout1->setMargin(10);//布局中各窗体的显示间距

layout1->setAlignment(Qt:

:

AlignHCenter);//布局中各窗体的显示位置

layout1->addWidget(toolBtn1_1);

layout1->addStretch();//插入一个占位符

……

this->addItem((QWidget*)groupBox1,tr("我的好友"));

实验题3.使用QprogressBar类和QProgressDialog类实现两种进度条的实现。

界面如下图:

【思考题】

1.第二题中尝试把每一个装载人头图像的按钮添加双击事件,使之弹出一个类似QQ的对话框,可以键入一些字符串?

 

实验四ui界面设计

【实验类型】设计性

【实验要求】必做

【实验目的】

1.掌握ui界面设计模式。

2.掌握进度条的实现。

【实验内容】

实验题1.实现一个“用户基本资料修改”的小程序,纯代码编写,熟悉布局、控件的使用及摆放。

如图2.3所示。

 

图2.3

【参考程序】

dialog.h

classDialog:

publicQDialog

{

Q_OBJECT

public:

Dialog(QWidget*parent=0);

private:

//左侧

QLabel*UserNameLabel;

QLabel*NameLabel;

QLabel*SexLabel;

QLabel*DepartmentLabel;

QLabel*AgeLabel;

QLabel*OtherLabel;

QLineEdit*UserNameLineEdit;

QLineEdit*NameLineEdit;

QComboBox*SexComboBox;

QTextEdit*DepartmentTextEdit;

QLineEdit*AgeLineEdit;

QGridLayout*LeftLayout;

//右侧

QLabel*HeadLabel;//右上角部分

QLabel*HeadIconLabel;

QPushButton*UpdateHeadBtn;

QHBoxLayout*TopRightLayout;

QLabel*IntroductionLabel;//右下角部分

QTextEdit*IntroductionTextEdit;

QVBoxLayout*RightLayout;

//底部

QPushButton*OkBtn;

QPushButton*CancelBtn;

QHBoxLayout*ButtomLayout;

};

dialog.cpp

Dialog:

:

Dialog(QWidget*parent)

:

QDialog(parent)

{

setWindowTitle(tr("UserInfo"));

/**************左侧******************************/

UserNameLabel=newQLabel(tr("用户名:

"));

UserNameLineEdit=newQLineEdit;

NameLabel=newQLabel(tr("姓名:

"));

NameLineEdit=newQLineEdit;

SexLabel=newQLabel(tr("性别:

"));

SexComboBox=newQComboBox;

SexComboBox->addItem(tr("女"));

SexComboBox->addItem(tr("男"));

DepartmentLabel=newQLabel(tr("部门:

"));

DepartmentTextEdit=newQTextEdit;

AgeLabel=newQLabel(tr("年龄:

"));

AgeLineEdit=newQLineEdit;

OtherLabel=newQLabel(tr("备注:

"));

OtherLabel->setFrameStyle(QFrame:

:

Panel|QFrame:

:

Sunken);

LeftLayout=newQGridLayout();

LeftLayout->addWidget(UserNameLabel,0,0);//用户名

LeftLayout->addWidget(UserNameLineEdit,0,1);

LeftLayout->addWidget(NameLabel,1,0);//姓名

LeftLayout->addWidget(NameLineEdit,1,1);

LeftLayout->addWidget(SexLabel,2,0);//性别

LeftLayout->addWidget(SexComboBox,2,1);

LeftLayout->addWidget(DepartmentLabel,3,0);//部门

LeftLayout->addWidget(DepartmentTextEdit,3,1);

LeftLayout->addWidget(AgeLabel,4,0);//年龄

LeftLayout->addWidget(AgeLineEdit,4,1);

LeftLayout->addWidget(OtherLabel,5,0,1,2);//其他

LeftLayout->setColumnStretch(0,1);

LeftLayout->setColumnStretch(1,3);

/*********右侧*********/

HeadLabel=newQLabel(tr("头像:

"));//右上角部分

HeadIconLabel=newQLabel;

QPixmapicon("37.png");//

HeadIconLabel->setPixmap(icon);//

HeadIconLabel->resize(icon.width(),icon.height());//

UpdateHeadBtn=newQPushButton(tr("更新"));

TopRightLayout=newQHBoxLayout();

TopRightLayout->setSpacing(20);

TopRightLayout->addWidget(HeadLabel);

TopRightLayout->addWidget(HeadIconLabel);

TopRightLayout->addWidget(UpdateHeadBtn);

IntroductionLabel=newQLabel(tr("个人说明:

"));//右下角部分

IntroductionTextEdit=newQTextEdit;

RightLayout=newQVBoxLayout();

RightLayout->setMargin(10);

RightLayout->addLayout(TopRightLayout);

RightLayout->addWidget(IntroductionLabel);

RightLayout->addWidget(IntroductionTextEdit);

/**********************底部*********************/

OkBtn=newQPushButton(tr("确定"));

CancelBtn=newQPushButton(tr("取消"));

ButtomLayout=newQHBoxLayout();

ButtomLayout->addStretch();

ButtomLayout->addWidget(OkBtn);

ButtomLayout->addWidget(CancelBtn);

/************************************************/

QGridLayout*mainLayout=newQGridLayout(this);

mainLayout->setMargin(15);

mainLayout->setSpacing(10);

mainLayout->addLayout(LeftLayout,0,0);

mainLayout->addLayout(RightLayout,0,1);

mainLayout->addLayout(ButtomLayout,1,0,1,2);

mainLayout->setSizeConstraint(QLayout:

:

SetFixedSize);

}

实验题2.使用QprogressBar类和QProgressDialog类实现两种进度条的实现。

界面如下图:

【思考题】

1.在实验1的基础上,使用堆栈窗体添加联系方式和详细资料界面,参考书中代码。

实验五主窗体

【实验类型】设计性

【实验要求】必做

【实验目的】

1.掌握创建菜单的步骤。

2.掌握新建文件的步骤。

3.了解文本编辑方法。

4.了解标准打印对话框的使用方法。

【实验内容

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2