当前位置:文档之家› Qt Style Sheet实践(二):组合框QComboBox的定制

Qt Style Sheet实践(二):组合框QComboBox的定制

Qt Style Sheet实践(二):组合框QComboBox的定制
Qt Style Sheet实践(二):组合框QComboBox的定制

导读

组合框是一个重要且应用广泛的组件,一般由两个子组件组成:文本下拉单部分和按钮部分。在许多既需要用户选择、又需要用户手动输入的应用场景下,组合框能够很好的满足我们的需求。如我们经常使用的聊天软件QQ登录框,便是一个很好的应用例子:

显然,用户既可以自己手动输入新的QQ号码,也可以在列表框中选择历史输入记录。对于提高用户体验是一个不错的手段。这篇博文重点讲述如何用QSS对组合框进行定制。

基本自定义

组合框的使用非常简单,为了加快叙述速度,我们直接在Qt Designer中拖一个QComboBox控件放到主窗口中。此时,我们什么都不用做就有了一个简单的组合框,如下:

但很显然,我们得添加一个文字,否则QComboBox不会显示任何内容。这样出现的组合框样式很普通:一个文本加一个带箭头号的按钮就完了。既然主题是用QSS来定制组合框,那么我们第一件事就是新建一个.qss文件并添加到资源文件中进行编译。.qss文件的内容初步编写如下:

QComboBox {

border: 1px solid gray;

border-radius: 3px;

padding: 1px2px1px2px; # 针对于组合框中的文本内容

min-width: 9em; # 组合框的最小宽度

}

我们给组合框3个像素的圆角,边框1个像素宽并将颜色设置为灰色。看看效果:

文本框部分似乎还不错,但是右边的按钮外观实在是太丑了,和整体风格不搭。我们继续美化一下按钮。按钮是QComboBox的一个子组件,用::drop-down指代。编写如下QSS代码:

QComboBox::drop-down {

subcontrol-origin: padding;

subcontrol-position: top right;

width: 20px;

border-left-width: 1px;

border-left-color: darkgray;

border-left-style: solid; /* just a single line */

border-top-right-radius: 3px; /* same radius as the QComboBox */

border-bottom-right-radius: 3px;

}

QComboBox::down-arrow {

image: url(:/misc/down_arrow_2);

}

可以看到,我们分别将按钮右上角和右下角设置了3个像素的圆角,这是因为我们前面给组合框的整体边框设置了圆角。如果不给按钮设置圆角,那么按钮的棱角将会遮挡住整体边框的圆角效果。另外,我们改变了按钮上的箭头图标。:: down-arrow也是一个子组件,我们用image属性替换了系统默认的图标。对比一下:

嗯,整体风格上看起来协调些了。当然了,在::drop-down子组件的定制中,我们将subcontrol-position属性设置成了top, right。这样按钮就位于最右边了。如果希望将按钮置于最左边显然也很简单。只需要将subcontrol-p osition设置为top, left,然后改变一下QComboBox的padding值就可以达到目的了。我们再拉出下拉框看看:

有什么问题呢?显然,下拉框中的选项高度太小了,看起来挺别扭的。那么如何对下拉框进行定制呢?我们有个很好的模仿对象:

360安全卫士的登录框中的下拉框看起来就挺不错,而且还有图标出现在选项的右边。下面我们就进入高级定制部分。看看又该如何进行改进。

高级自定义

要实现上述效果,我们首先要做的就是将QComboBox设置为可以编辑的(setEditable())。这样,文本框中的内容才可以手动进行输入。另外,我们还注意到,下拉框中的选项右边还有图标出现,QQ的登录框中也出现了图标。我们最直观的想法就是用布局管理器(水平或垂直的)将所有组件组装成一个整体,然后再添加到下拉框中去。

怎么做呢?幸运的是,QComboBox内部也是Model/View框架来维护下拉框内容的。因此,最直接的方法就是定义一个QListWidget,将这个QListWidget设置为QComboBox的View,而将QListWidget的Model设置为QComboBox的Model。QListWidget只是一个View类,因此我们还得自定义View类中的Item啊。

那好,自QWidget派生一个子类,实现水平布局,将所有子组件添加到里面去:

ComboboxItem::ComboboxItem(QWidget *parent)

: QWidget(parent)

{

m_img = new QLabel(this);

QPixmap pic(QStringLiteral(":/misc/preference"));

m_img->setPixmap(pic);

m_img->setFixedSize(pic.size());

m_label = new QLabel(this);

m_layout = new QHBoxLayout(this);

m_layout->addWidget(m_label);

m_layout->addStretch();

m_layout->addWidget(m_img);

m_layout->setSpacing(5);

m_layout->setContentsMargins(5, 5, 5, 5);

setLayout(m_layout);

}

代码很简单,定义了两个标签QLabel,一个显示文本,一个显示图标。用水平布局管理器添加到QWidget中去。

ThemeRoller::ThemeRoller(QWidget *parent)

: QMainWindow(parent)

{

ui.setupUi(this);

m_listWidget = new QListWidget(this);

// 设置子项目代理,否则下拉框选项周围会出现虚线框m_listWidget->setItemDelegate(new

NoFocusFrameDelegate(this));

https://www.doczj.com/doc/c02616364.html,boBox->setEditable(true);

https://www.doczj.com/doc/c02616364.html,boBox->setModel(m_listWidget->model());

https://www.doczj.com/doc/c02616364.html,boBox->setView(m_listWidget);

// 在下拉框中添加5个选项

for(int i = 0; i < 5; ++i)

{

ComboboxItem* item = new ComboboxItem(this);

item->setLabelContent(QString("Account") + QString::number(i, 10));

connect(item, SIGNAL(chooseAccount(const QString&)), this, SLOT(onChooseAccount(const QString&)));

QListWidgetItem* widgetItem = new

QListWidgetItem(m_listWidget);

m_listWidget->setItemWidget(widgetItem, item);

}

}

我们还将ComboboxItem的chooseAccount()信号关联到了onChooseAccount()槽。这样,当用户点击了选

项中的某一个选项时,能够在QComboBox的文本框中显示选中的项。那么,QSS该如何编写呢?

QComboBox QAbstractItemView::item {

height: 25px;

}

QListView::item {

background: white;

}

QListView::item:hover {

background: #BDD7FD;

}

也很简单,只是设置了选项中的高度,和QComboBox的高度保持一致,这样看起来不至于别扭。然后给选项设置了鼠标悬停背景色。至此,整个定制过程就结束了。看看效果如何:

小结

QComboBox分成三个定制部分:文本框(是否可编辑),按钮(箭头标记、边框),下拉框(选项高度、子组件布局)。由以上可见,我们利用QSS可以很好的实现出自己想要的效果,而且效果还不赖。

中间代码生成实验报告doc

中间代码生成实验报告 篇一:编译方法实验报告(中间代码生成器) 编译方法实验报告 XX年10月 一、 实验目的 熟悉算术表达式的语法分析与中间代码生成原理。 实验内容二、 (1)设计语法制导翻译生成表达式的四元式的算法; (2)编写代码并上机调试运行通过。 输入——算术表达式; 输出——语法分析结果; 相应的四元式序列。 (3)设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文 法,使用扩展的语法分析器实现语法制导翻译。 三、实验原理及基本步骤 ●算术表达式文法: G(E):E ? E ω0 T | T T ? T ω1 F | F F ? i | (E) ●文法变换:

G’(E) E ? T {ω0 T(本文来自:小草范文网:中间代码生成实验报告)} T ? F {ω1 F} F ? i | (E) ●属性翻译文法: E ? T {ω0 “push(SYN, w)” T “QUAT”} T ? F {ω1 “push(SYN, w)” F “QUAT”} F ? i “push(SEM, entry(w))” | (E) 其中: push(SYN, w) —当前单词w入算符栈SYN; push(SEM, entry(w)) —当前w在符号表中的入口值压入语义栈SEM; QUAT —生成四元式函数 i.T = newtemp; ii.QT[j] =( SYN[k], SEM[s-1], SEM[s], T); j++; iii.pop( SYN, _ ); pop( SEM, _ ); pop( SEM, _ ); push( SEM, T ); ●递归下降子程序: 数据结构:SYN —算符栈; SEM —语义栈; 四、数据结构设计 使用递归的结构进行四元式的设计,同时,运用堆栈

实验二MATLAB程序设计含实验报告

实验二M A T L A B程序设计含实验报告 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

实验二 MATLAB 程序设计 一、 实验目的 1.掌握利用if 语句实现选择结构的方法。 2.掌握利用switch 语句实现多分支选择结构的方法。 3.掌握利用for 语句实现循环结构的方法。 4.掌握利用while 语句实现循环结构的方法。 5.掌握MATLAB 函数的编写及调试方法。 二、 实验的设备及条件 计算机一台(带有以上的软件环境)。 M 文件的编写: 启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器 (Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正 三、 实验内容 1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。并输入几组典型值加以检验。 (提示:提示输入使用input 函数) 2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。 要求:(1)用switch 语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法) 3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21 3105168421 63105168421 运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab 语句填写上相关注释,说明其含义或功能。 4. y 5. (Root Mean Square)的计算(1(2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。 6.根据2 2222 1......3121116n ++++=π,求π的近似值。当n 分别取100、1000、10000时,结果是多少 思考题:

青岛科技大学实验报告(实验一)

班级:姓名:学号:成绩: 实验一: Qt 开发环境的搭建 (一)实验目的: ?掌握Qt 开发环境的搭建方法 ?掌握Qt Creator 的基本使用方法 ?了解Qt Creator 的界面布局 ?了解Qt 相关工具软件 (二)实验准备 ?对Qt 及Qt Creator 有基本了解 ?了解MinGW ?下载Qt 4.8.5、Qt Creator 2.8.0 和MinGW 安装包 (三)实验内容: ?安装Qt Creator ?安装MinGW ?安装Qt ?关联Qt Creator 和Qt ?运行一个示例程序 ?查看Qt 工具 (四)实验过程 1.安装Qt Creator (1)双击运行qt-creator-windows-opensource-2.8.0.exe 安装包,将出现如图1.1 所示的安装向导界面。单击“下一步”按钮。

图1.1 Qt Creator 安装向导 (2)选择安装位置界面如图1.2 所示。这里默认安装在C 盘,选中“Associate common filetypes with Qt Creator”选项会为Qt Creator 关联相应类型的文件,以后双击相应类型的文件(如Qt 项目文件)可直接在Qt Creator 中打开。这里保持默认设置,单击“下一步”按钮。 图1.2 选择安装位置 (3)在如图 1.3 所示的“许可协议”界面,选择“我接受此许可”即可。然后单击“下一步”按钮。 图1.3 许可协议界面

(4)在设置“开始菜单快捷方式”界面,可以在系统开始菜单中创建Qt Creator 的快捷方式,可以选择显示的位置和更改显示名称。如图1.4 所示。这里保持默认即可。单击“下一步”按钮。 图1.4 设置开始菜单快捷方式 (5)在“已做好安装准备”界面,单击“安装”按钮开始安装。如图1.5 所示。 图1.5 已做好安装准备界面 (6)完成安装。在完成安装界面,单击“完成”按钮结束安装。因为默认勾选了“Launch Qt Creator”,所以完成安装后会自动运行Qt Creator。如图1.6 所示。

QT拼图实验报告

拼图游戏 1. 文档介绍 本文档主要介绍了一个简单的拼图游戏的开发过程 2. 系统概述 就是一个简单的拼图游戏,将一幅图片随机打散,然后拼出原图,很简单,也没有加入时间限制,只是一个拼图游戏的核心。 3. 设计约束 本软件是用Qt开发出来的,Qt一个c++的gui类库,可以跨多种操作系统平台。除了Qt库,还用到的就是标准的c程序库,各个系统中的开发环境也都有。基于这两点,所以我开发出来的拼图游戏可以跨平台移植而不用修改代码,直接在目标平台上再重新编译一下就行了。另外,我开发的只是一个拼图游戏的核心。有很强的可扩展性,可以根据不同的需要而加入代码进行定制。拼图中用到的图像分割和随机打散算法都是比较高效的。鼠标点击图像块进行图像的交换,非常易用,对用户来说,非常清晰。 4. 开发与运行环境 ●操作系统:Windows7 32位旗舰版Service Pack 1 ●处理器:Pentium(R) Dual-Core CPU E6300 @ 2.8GHz 2.8GHz ●安装内存(RAM): 2.00GB ●编译器:minGW移植到windows下的gcc编译器 ●调试器:minGW移植到windows下的gdb调试器 ●Make:minGW中的mingw32-make ●Qt C++ GUI库 ●软件开发成功后拿到windowx xp和其他windows 7下运行毫无问题。

5. 软件的总体结构图 图1 程序总流程图

5.1 随机打散图片 图2 随机打散图片

5.2 拼图流程 图3 拼图流程

6. 功能模块设计 对于一个拼图游戏的核心来说,主要的模块就是图片的随机打散模块和拼图模块。我将屏幕窗口分成9块,如下图所示: 图4 屏幕窗口 6.1 图像随机分割 我们将图像也分成和屏幕窗口一样的9块,如下图所示: 图5 图像分割 在Qt中,视口是物理坐标系下指定的任意矩形,窗口指的是同一矩形,只不过是逻辑坐标系下的。我们先将视口设置成屏幕上的一块,然后窗口设置成一块大小和一块图像的大小一样的矩形,我们将一块图像绘制到窗口中,经过窗口-视口变换后就绘制到了视口所对应的屏幕上。

QT应用程序设计

南昌航空大学实验报告 二00 一四年五月十四日 课程名称:嵌入式系统设计及应用实验名称:QT应用程序设计 班级:姓名:同组人: 指导教师评定:签名: 一、实验内容 1. 阅读QT主窗口程序helloworld.cpp,然后编译并运行。 2.在helloworld.cpp程序中增加一个名为“hello”的按钮。 3. 编写一个登陆对话窗程序 二、实验步骤 (一)helloword程序 1.我们用File->New菜单来新建工程。 2这里我们选择Qt4 Gui Application。 3下面输入工程名和要保存到的文件夹路径。我们这里的工程名为helloworld。 4这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next。 5.我们将base class选为QDialog对话框类。然后点击Next。 6点击Finish,完成工程的建立。 7我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的绿色的run按钮或者按下Ctrl+R快捷键运行程序。 (二)登陆对话框程序 1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为 Base class,这样便建立了主窗口 2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中 3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入 框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。 4.将exitBtn的单击后效果设为退出程序,关联如下: 5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写 入一句 void loginDlg::on_loginBtn_clicked()

linux实验报告(QT)

Linux实验报告 学号:092201046 姓名:张攀班级:信工0901 实验时间:2012-4-26 实验地点:A4049 指导老师:雷鸿实验名称QT/E图形界面开发环境的搭建 实验目的成功搭建QT/E图形界面 一、实验题目 QT/E图形界面开发环境的搭建 二、实验内容及结果(请将相应题目代码和结果截图写在相应题目 下方) 1、[admin@localhost ~]$ su - root 密码: [root@localhost ~]# cd /mnt/hgfs/V MwareFedora14/ [root@localhost my6410]# cd qt-x11-opensource-src-4.5.3 [root@localhost qt-x11-opensource-src-4.5.3]# ./configure Which edition of Qt do you want to use ? Type 'c' if you want to use the Commercial Edition. Type 'o' if you want to use the Open Source Edition. O This is the Qt/X11 Open Source Edition. Y ou are licensed to use this software under the terms of the Lesser GNU General Public License (LGPL) versions 2.1. Y ou are also licensed to use this software under the terms of the GNU General Public License (GPL) versions 3. Type '3' to view the GNU General Public License version 3. Type 'L' to view the Lesser GNU General Public License version 2.1. Type 'yes' to accept this license offer. Type 'no' to decline this license offer. Do you accept the terms of either license? Y es for /home/admin/my6410/qt-x11-opensource-src-4.5.3/demos/arthurplugin/arthurplugin.pro Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into /usr/local/Trolltech/Qt-4.5.3 To reconfigure, run 'gmake confclean' and 'configure'.

qt课程设计实验报告

程序设计课程设计实验报告 (qt实验报告) 信息科学与技术学院 软件三班 高文博 201005070309 2011年5月

实验1:计算当初存入本金的钱数。(12题) 1.实验目的、要求 目的: 1)熟悉qt中的常用属性; 2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等; 3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功 能与函数结合起来。 要求: 1)掌握对控件的文本色,背景色等常用属性的设置。 2)掌握对控件、边框尺寸与结构的设置 3)掌握对函数的设置 2.实验设备 笔记本电脑,已安装Qt 开发环境。 3.实验内容、步骤 ●先在vc++上进行编译。 ●应用qt3.38进行编译,运行。 实验步骤: 1)根据题目需求在草纸上画出结构图; 2)根据草图用代码设计整体框架和控件; 3)在qt上运行; 4)运行成功后根据功能添加函数; 5)在头文件中添加头文件。 6)将添加的功能函数与功能控件相连; 7)分别对每个函数进行测试; 8)将整个程序在qt运行调试; 9)运行通过后给每个函数写注释; 实验代码如下所示 A (1)主框架结构代码 #include"gwbsave.h"

GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) { //?? vBox=new QVBoxLayout(this); vBox->setMargin(5); vBox->setSpacing(5); label=new QLabel("Please input the lilv:",this,"label"); vBox->addWidget(label); //?? hBox=new QHBoxLayout(this); hBox->setMargin(5); hBox->setSpacing(5); vBox->addLayout(hBox); le1=new QLineEdit(this,"le1"); hBox->addWidget(le1); //?,?? hBox2=new QHBoxLayout(this); hBox2->setMargin(5); hBox2->setSpacing(5); vBox->addLayout(hBox2); leResult=new QLineEdit(this,"leResult"); leResult->setReadOnly(true); leResult->setPaletteBackgroundColor(Qt::gray); hBox->addWidget(leResult);

嵌入式qt实验报告简单计算器的设计)

电子科技大学 学生实验报告书课程名称实用嵌入式应用系统设计与实现 任课老师 实验名称简单功能计算器的设计 学生姓名 学生学号 学生学院 2015 — 2016 学年第 1 学期 实验项目名称简单功能计算器的设计 实验日期

一、实验内容 1、设计一个简单计算器并能完成简单的四则运算,实时更新运算结果; 2、带界面计算器自带数字及功能按钮,能实现更多以及更灵活的的计算功能。 一、实验步骤设计(包括实验方案设计、实验步骤或算法描述等) 实验设计方案如下: 图1 简单计算器的设计方案流程图2 带显示界面计算器的设计方案流程 实验步骤: 一、简单计算器的设计: 1、创建一个Qt GUI应用项目,项目名称为dialog_designer ,基类选择Qwidget。项目建好后会自动生成一系列文件,双击界面文件widget.ui 进入Qt Designer 进行界面设计。 2、界面设计完成后修改控件的各属性,并修改Tab顺序,点击工具栏上的的“编辑Tab顺序”按钮,依次按顺序点击即可,完成后再按工具栏上的编辑控件按钮返回。 3、在头文件widget.h的Widget类添加共有槽函数;在源文件widget.cpp 中添加新代码。 4、用模拟器调试运行。 二、带界面的计算器的设计: 与简单计算器的设计步骤基本相同。但是需要在项目文件(后缀为.pro)添加一段代码,使得程序中能使用Qt脚本,在原有代码的基础上添加。在头文件widget.h的Widget类添加共有槽函数和全局变量,以及包含头文件QtScript,以使用Qt Script API。在源文件widget.cpp

中添加新代码,之后即可运行调试。 三、实验结果分析及代码(包括结果描述、综合分析及实现关键代码)实验结果如下: 1、简单计算器: 代码: (1)在widget.h文件中 #ifndef WIDGET_H #define WIDGET_H #include namespace Ui{ class Widget; } class Widget:public QWidget { Q_OBJECT public: explicit Widget(QWidget*parent=0); ~Widget(); private slots: void on_doubleSpinBox_1_valueChanged(); void on_doubleSpinBox_2_valueChanged(); void on_doubleSpinBox_3_valueChanged(); void on_doubleSpinBox_4_valueChanged(); void on_doubleSpinBox_5_valueChanged(); void on_doubleSpinBox_6_valueChanged(); void on_doubleSpinBox_7_valueChanged(); void on_doubleSpinBox_8_valueChanged(); private: Ui::Widget*ui; }; #endif//WIDGET_H (2)在widget.cpp源文件中 #include"widget.h" #include"ui_widget.h" Widget::Widget(QWidget*parent): QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); } void Widget::on_doubleSpinBox_1_valueChanged()

实验四 Qt编写简单的计算器

实验四Qt编写简单的计算器 一、【实验目的】 1)熟悉QtCreator的简单操作。 2)了解Qt程序编写框架。 3)了解信号和槽机制,熟练掌握信号与槽在应用程序中的使用。 二、【实验内容】 1)查看API手册,学习简单的Qt类的使用,如QLineEdit、QPushButton 等。 2)用QtCreator创建工程,用Qt编写计算器程序。 3)对计算器程序进行移植。 三、【实验步骤】 1.创建工程 1)打开QtCreator,如图1所示。

图1 2)选择File->New File or Project,然后在弹出的对话框中选择Other Project->Empty Qt project(如图2所示),然后进入下一步。 图2

3)定义新工程的工程名并选择保存路径(如图3所示),然后进入下一步。 图3 4)选择Qt版本,这里选择使用Qt4.7.1,取消对Qt in PA TH的选择(如图 4所示),然后进入下一步,完成新工程的创建(如图5所示)。

图4 图5

2.计算器程序的实现 计算器程序主要分以下两部分工作:一是实现计算器的图形界面;二是实现按键事件和该事件对应的功能绑定,即信号和对应处理槽函数的绑定。 1)计算器图形界面的实现 通过分析计算器的功能我们可知,需要16个按键和一个显示框,同时考虑到整体的排布,还需要水平布局器和垂直布局器。通过组织这些类我们可以实现一个简单的带有数字0~9,可以进行简单四则运算且具有清屏功能的计算器。对于这些类的具体操作会在后面的代码中详细说明。 2)信号和对应槽函数的绑定 分析计算器的按键我们可以把按键事件分为以下三类,一是简单的数字按键, 主要进行数字的录入,这类按键包括按键0~9;二是运算操作键,用于输入数学运算符号,进行数学运算和结果的显示,这类按键包括“+”,“-”,“*”,“/”,“=”;三是清屏操作键,用于显示框显示信息的清除。 3)进入刚才创建的空工程,双击左侧的Calculator.pro,在主编辑框中目前 显示Calculator.pro的内容为空,如图6所示。这是因为目前什么文件都 没有添加的缘故。

QT实验报告

面向对象程序设计2 实验报告 专业:计算机科学与技术 年级:2013级 班级:工科 1班 学号:070613047 姓名:黄剑波

目录 实验一:线程通信:门铃 (1) 一、实验目的 (1) 二、实验内容 (1) 三、实验要求 (1) 四、实验步骤 (1) 五、实验源码 (2) main.cpp (2) doorbell.h (2) doorbell.cpp (4) doorbell.qrc (7) 六、实验结果与分析 (7) 七、教师评价 (7) 实验二:高阶多线程QtConcurrent的使用:ImageLoader (7) 一、实验目的 (8) 二、实验内容 (8) 三、实验要求 (8) 四、实验步骤 (8) 五、实验源码 (9) main.cpp (9) widget.h (9) widget.cpp (10) imageloader.qrc (11) 六、实验结果与分析 (12) 七、教师评价 (13) 实验三:HTTP编程:httpTestTool (14) 一、实验目的 (14) 二、实验内容 (14) 三、实验要求 (14) 四、实验步骤 (14) 五、实验源码 (15) main.cpp (15) widget.h (15) widget.cpp (17) 六、实验结果与分析 (35) 七、教师评价 (37) 实验四:FTP:ftpTestTool (38) 一、实验目的 (38) 二、实验内容 (38) 三、实验要求 (38) 四、实验步骤 (38)

五、实验源码 (39) main.cpp (39) widget.h (39) widget.cpp (41) 六、实验结果与分析 (48) 七、教师评价 (48) 实验五:TCP服务器:timeService (48) 一、实验目的 (49) 二、实验内容 (49) 三、实验要求 (49) 四、实验步骤 (49) 五、实验源码 (50) main.cpp (50) timeService.h (50) timeService.cpp (51) 七、教师评价 (52) 实验六:TCP:timeClient (52) 一、实验目的 (53) 二、实验内容 (53) 三、实验要求 (53) 四、实验步骤 (53) 五、实验源码 (54) main.cpp (54) widget.h (54) widget.cpp (55) timeClient.h (56) timeClient.cpp (56) 六、实验结果与分析 (58) 七、教师评价 (58)

qt实验报告

嵌入式系统界面设计实验 实验题目:基于Qt的图片表格转换 学院: **学院 专业:电子信息工程 班级: 学号: 姓名: 小组成员: 编写日期: 2019.10

目录 1. 实验设计背景 (1) 2. 实验设计目的 (1) 3. 实验设计环境 (1) 4. 实验系统需求分析 (1) 4.1 系统调查 (1) 4.2 用户需求 (2) 4.3 可行性分析 (2) 4.4 系统业务流程图 (3) 5. 实验具体操作步骤及方法 (3) 5.1 程序运行开始主界面 (3) 5.2 用户修改界面 (4) 5.3 最终生成表格 (4) 6. 实验结果分析 (5) 7. 实验效果图 (6) 8. 实验设计具体任务分工 (6) 9. 实验设计心得体会 (6)

1.实验设计背景 当今办公室中有不少的表格是基于图片的这给后期人员的校对处理带来了不少的麻烦,特别是列数较多行数较多的表格。在将表通过人工的方法转换为Excel 表格时容易出现差错,表格行列错位、数据抄错等等问题。长时间的工作还容易损害校对人员的健康。 2.实验设计目的 1.将表格分解成小片,以便于人工填写 2.尽可能的通过软件将图片数字转换为文字 3.Excel表格导出 3.实验设计环境 Visual Studio Code Python 3.7 Python包:Pytesseract、openpyxl、numpy、cv2 Qt Creater Tesseract-OCR 4.实验系统需求分析 4.1系统调查 在许多小公司的办公中,由于大多业务系统都是使用的通用的模板,没有对具体情形进行优化,以及以前未使用办公系统的历史遗留问题,在实际的办公中经常会出现大量图像表格,需要人为地输入到EXCEL表格中以用于后续公司的各项统计工作

C++实验报告-Qt CQURUN_Game

重庆大学课程设计报告 课程设计题目:『CQU Run』(TD类游戏)——基于Qt的小游戏软件设计与实现 学院:计算机学院 专业班级:信息安全2班& 物联网1班年级:2012级 姓名:许佳丽,鄢然,陈点 学号:20125193,20125200,20125209 完成时间:2013 年12 月27 日成绩: 指导教师:杨广超 重庆大学教务处制

指导教师评定成绩: 指导教师签名:年月日

指导教师评定成绩: 指导教师签名:年月日

指导教师评定成绩: 指导教师签名:年月日

重庆大学本科学生课程设计任务书 说明:学院、专业、年级均填全称,如:计算机学院、计算机科学与技术、2012。

课程设计正文 主要内容包括: 1 需求分析(功能流程图) 2 系统设计(类结构图、模块图等) 3 关键代码描述 4 系统测试报告 5 运行效果 6 总结 格式要求 纸张大小: A4 页边距:上下左右各留20mm 行距:采用固定值20磅 标题:章节标题使用三号黑体、居中 (大标题使用四号黑体,小标题使用小四号黑体) 正文:小四号宋体 页眉:“学生姓名:课程设计题目”,五号宋体,居中 页脚:阿拉伯数字编页码,小五号宋体,居中 参考文献:五号宋体 附录:五号宋体 备注: 1、学生:提交的课程设计报告电子文档命名为:“组号(2位数字)年级(两位数字 不要“级”字)专业(缩写:计算机科学与技术专业(计科)、网络工程专业(网络)、信息安全专业(信息)、物联网工程(物联网))项目组成员(学号(八位数字)姓名).doc。如第1组,专业为“计算机科学与技术”专业,项目组成员有:张三(学号20125676),李四(学号20125676),王五(学号20125676),完成的课程设计报告命名为:01_10计科_20125676张三_20125676李四_20125676王五。 2、教师:报告批阅完成后将评价后的实验报告转换为PDF格式文件刻光盘,连同课 程设计成绩单一起放入试卷袋存档。

基于QT设计的串口通信系统实验报告

串口通信系统 姓名:马亮 学院:电气与信息工程学院专业班级:物联网工程2015-01班学号:2015444139 指导老师:易军 成绩: 重庆科技学院 二零一八年六月

大作业规则及要求 规则1: 同学们做一个题目,可以自拟题目,但必须经过任课老师同意,中途不得更改题目。 规则2: 任课老师将列出每个题目的具体功能及分值,完成后获得对应分数,发现代码抄袭或者现场答辩无法解释,记0分。 规则3: 鼓励增加新功能,并给予适当加分。 规则4: 大作业报告除遵守模板格式外,应按照需求分析、系统设计、详细设计、系统测试四个部分组织,其中需求分析应将本项目的功能需求、性能指标、界面、安全等因素考虑在内;系统设计应多画流程图说明设计意图;详细设计应包括关键代码或接口定义,数据表定义等;系统测试应包括功能实现情况(截图)、各性能指标完成情况(表格)。 规则5: 所有题目应以TQ2440为平台进行开发应用,否则答辩成绩扣30分。

摘要 嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。 随着Internet的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经成了最热门的技术之一。嵌入式Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点。目前正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。新一代嵌入式计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCP/IP通信协议是独立于任何厂家的硬件的,因此嵌入式环境下的适时网络通信成为嵌入计算技术研究的重点和热点。本文通过给予TQ2440的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。 关键词:嵌入式 Linux操作系统串口通信 TQ2440

物联网实验报告

实验名称:RFID开发实验 一、实验环境 硬件:UP-MobNet-II型嵌入式综合实验平台,PC机 软件:Vmware Workstation +Ubuntu12.04+ MiniCom/Xshell + ARM-LINUX交叉编译开发环境 Rfid_900M模块QT测试程序 二、实验内容 1、了解UHF的基本概念、国际标准、协议内容 2、了解UHF的标准接口 3、了解UHF的应用范围及领域 4、掌握对功率和功放相关命令的操作 三、实验原理 超高频射频识别系统的协议目前有很多种,主要可以分为两大协议制定者:一是ISO(国际标准化组织);二是EPC Global。ISO组织目前针对UHF(超高频)频段制定了射频识别协议ISO 18000-6,而EPC Global组织则制定了针对产品电子编码(Electronic Product Code)超高频射频识别系统的标准。目前,超高频射频识别系统中的两大标准化组织有融合的趋势,EPC Class 1 Generation 2标准可能会变成ISO 18000-6标准的Type c。本文主要讨论的是针对 ISO 18000-6 标准的射频识别系统,本节讨论的是 ISO 18000-6 协议中与系统架构相关的物理层参数。 ISO 18000-6 目前定义了两种类型:Type A 和 Type B。下面对这两种类型标准在物理接口、协议和命令机制方面进行分析和比较。 1.物理接口 ISO 18000-6 标准定义了两种类型的协议—Type A 和 Type B。标准规定:读写器需要同时支持两种类型,它能够在两种类型之间切换,电子标签至少支持一种类型。 (1)Type A 的物理接口 Type A 协议的通信机制是一种“读写器先发言”的机制,即基于读写器的命令与电子标签的应答之间交替发送的机制。整个通信中的数据信号定义为以下四种:“0”,“1”,“SOF”,“EOF”。通信中的数据信号的编码和调制方法定义为: ①读写器到电子标签的数据传输 读写器发送的数据采用 ASK 调制,调制指数为 30%(误码不超过 3%)。 数据编码采用脉冲间隔编码,即通过定义下降沿之间的不同宽度来表示不同的数据信号。 ②电子标签到读写器的数据传输 电子标签通过反向散射给读写器传输信息,数据速率为 40kbits。数据采用双相间隔码来进行编 码,是在一个位窗内采用电平变化来表示逻辑,如果电平从位窗的起始处翻转,则表示逻辑“1”;如果电平除了在位窗的起始处翻转,还在位窗的中间翻转,则表示逻辑“0”。 (2)Type B 的物理接口 Type B 的传输机制也是基于“读写器先发言”的,即基于读写器命令与电子标签的应答之间交换的机制。 ①读写器到电子标签的数据传输 采用 ASK 调制,调制指数为 11%或 99%,位速率规定为 10kbits 或 40kbits,由曼彻斯特编码来完成。具体来说就是一种 on-offkey 格式,射频场存在代表“1”,射频场不存在代表“0”。曼彻斯特编码是在一个位窗内采用电平变化来表示逻辑“1”(下降沿)和逻辑“0”(上

成都理工大学Qt课程设计实验报告_音乐播放器

程序设计基础课程设计(论文) 设计(论文)题目 基于Q T实现的简易音乐播放器 学院名称信息科学与技术 专业名称软件工程 学生姓名徐玉祥 学生学号201413040202 任课教师李军 设计(论文)成绩 教务处制 2015年5 月13 日

填写说明 1、专业名称填写为专业全称,有专业方向的用小括号标明; 2、格式要求:格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm, 左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

基于QT实现的简易音乐播放器 作者姓名:徐玉祥专业班级:201413040202 指导教师:李军 摘要 随着现在科技的发展,越来越多的嵌入式设备已经被广泛应用于生活中,这大大提高了人们的生活质量。时下,音乐播放器已经成为人们生活中不可或缺的必备品。它的诞生,让动听的声音有了存储的载体,得以广泛的传播和分享。然而,各种播放器功能特点不同,有些功能强大却占用系统资源多,有些软件小却不支持多种音频格式。 论文在讨论Qt Phonon媒体框架的基础上,通过对音乐播放器的基本功能进行了分析和界面的总体设计,提出一套适用于嵌入式系统的媒体播放器框架方案,并最终运用Qt Creator实现了整个应用,通过测试运行表明该音乐播放器基本功能完善、运行稳定,能够较好地满足实际应用的需要。 关键词:嵌入式;播放器;Qt;Phonon

qt画图实验报告

qt画图实验报告 篇一:QT综合作业实验报告 一、实验目的 1,了解并掌握Qt集成开发环境下使用Qt Designer 开发图形界面程序的流程和相关 操作; 2,了解并掌握Qt的信号槽和信号传递机制,并通过具体应用加深理解; 3,了解并掌握使Qt应用程序支持中文或国际化的方法,并在本次实验中使用; 4,了解并掌握QPainter的translate、shear等库函数的使用方法和Widget类的使用方法,并通过本次实验加深理解; 5,掌握在Qt Designer界面上为菜单项添加工具栏按钮、创建相应槽函数的方法; 6,了解并掌握使用双缓冲机制绘图的方法。 二、实验环境 操作系统:Windows 7 应用软件:Qt Creator 开发平台:qt-sdk-win-opensource-XX.04 三、程序流程图 :

四、核心源代码 mainwindow.cpp的内容(实现菜单项的功能和绘图功能的调用) #include "mainwindow.h" #include "ui_mainwindow.h" #include "donewdialog.h" #include #include #include #include "aboutdialog.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle(tr("Qt绘图板")); setFixedSize(700,500); //主窗口大小设为700*500 area = new PaintArea; scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); //scrollArea对象的背景色设为Dark

QT版连连看制作的实验报告

一.游戏概述 1.1游戏简介 游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。 游戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。 随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”,“果蔬连连看”等,流行的“水晶连连看”以华丽界面吸引了一大批的女性玩家。 2008年,随着社交网络的普及和开放平台的兴起,“连连看”被引入了社交网络。“连连看”与个人空间相结合,被快速的传播,成为一款热门的社交游戏,其中以开发者Jonevey在Manyou开放平台上推出的“宠物连连看”最为流行。 1.2游戏功能 本次设计连连看主要是在原连连看对战的基础上设计挑战模式,具体的功能如下所述: ●游戏运行界面简单美观,操作简单,运行稳定; ●能够根据不同的等级模式播放不同的游戏背景音乐,包括操作方向 键、消行时的声音,音量由玩家操作控制; ●设计不同的游戏难度,当玩家达到一定的积分,可以进入相关难度 的等级; 玩家可直接操作界面上的相关按钮来控制游戏的开始、暂停、设置、退出等功能。

二.需求分析 2.1开发的需求 2.1.1 C++ C/C++的哲学就不一样了,同一份程序代码,只要在该平台重新Compile成该平台的执行档,就能在该平台执行,若文字模式下的程序,的确可以跨平台,程序完全不需修改,但GUI盛行以后,由于各GUI的Library都不一样且没有标准,所以GUI程序并没办法跨平台Compile,因为各平台都有专属的Library。但是C/C++优势就是执行速度快,若能解决GUI Library的问题,则跨平台即可解决。 除了GUI Library需要统一外,还得看该Library设计的好不好才行,Linux GUI我没写过就不说了,若在Windows平台,Borland的C++ Builder使用Delphi的VCL Library,Microsoft的Visual C++可以用MFC和.NET Framework,首先来看Borland的C++ Builder,它使用标准的ANSI C++语言开发,利用VCL写出来的程序也算蛮漂亮的,执行速度很快,比较麻烦的是C++Builder当初为了缩短上市时间,并没有设计自己的Library,而是藉用Delphi的Library,导致C++ Builder在Compile时,是先用Delphi的Compiler将VCL compile成object file 后,再用C++ Builder将你写的C++程序compile成object file,最后再用Linker将所有的object file link起来,由于这都是IDE在做,对程序设计师似乎影响不大,但VCL由于是Delphi的Library,所以若想深入研究VCL的source code时,则必须学Delphi的Pascal才行,否则看不懂VCL source code,这也是很多人对C++ Builder却步的原因。 再来看Microsoft的Visual C++,MFC用的是完整的ANSI C++语言,所以语言部分不是问题,但若你看过用MFC写的程序,你一定会惊讶为什么这么复杂,程序代码非常冗长不好看,且MFC是有名的难学,若Visual C++搭配.NET Framrwork,则无法使用ANSI C++,得用其.NET 平台版本的C++/CLI,相信这点很多人就有意见了,不过.NET

QT实验报告

实验报告书 实验名称:QMainWindow 程序设计 专业班级:111030706 学号:11103070602 11103070619 姓名:陈俊宇潘耀斌 联系电话: 指导老师:谭智 实验时间:2014.4.28—2014.6.16 计算机科学与工程学院计算机实验室(中心)

1 设计分析 QMainWindow程序设计对QMainWindow类窗口进行分析,QMainWindow类是一个经常用到的类,为用户提供了一个主窗口程序,可包含一个菜单条,一个工具栏,一个状态条以及一个中央窗体,是许多应用程序的基础,,如文本编辑器,图片浏览器都是以QMainWindow为基础实现的。 本次程序设计,首先分析了一个基本的窗口程序的实现,只包含基本的菜单和工具栏,实现了基本的窗口功能,如打开、新建等。 2 功能需求 实现一个基本的窗口程序,包括一个菜单条,一个工具栏,中央可编辑窗体及状态栏。实现的效果如图所示。 在编写文本编辑器等应用中,需要对文本进行排序,以列表的方式显示各段文本。即实现文本的排序功能,并实现文本的对齐及撤销和恢复功能,如图所示。

在编辑框中任意输入几段文字,单击工具栏上的下拉列表框,选择排序方式,则光标所在的文本段以所选排序方式自动缩进排序显示,并且紧接着的文本段以同样的方式排列;工具栏中部的4个快捷按钮实现文本的对齐功能,分别为左对齐,右对齐、居中和两端对齐;工具栏右部的快捷按钮实现文本操作的前进/回退功能。 3 程序源代码 #include "mainwindow11103070602.h" #include "ui_mainwindow11103070602.h" #include #include #include #include #include #include #include #include MainWindow11103070602::MainWindow11103070602(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow11103070602) {

相关主题
文本预览
相关文档 最新文档