界面UI设计

界面设计分为预览和回放两个模块,本节主要是预览模块。

一、替换系统图标

1. 替换生成程序图标

在这里插入图片描述

2. 替换生成界面图标

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、窗口布局

1. 自定义标题栏图像

QWidget来实现自定义标题栏,因为QWidget可以自定义大小。布局器使用代码。

  1. 自定义标题栏
    在这里插入图片描述
  2. 添加组件,并改变样式
    在这里插入图片描述
  3. 定义标题栏最小化、最大化、关闭功能键
    在这里插入图片描述

2. 窗口布局

#include<QVBoxLayout>
#include<QHBoxLayout>

/*创建布局器*/
auto Vlay = new QVBoxLayout();
this.setLayout(Vlay);
Vlay->setContentsMargins(0, 0, 0, 0);   //边缘间隔
Vlay->setSpacing(0);    //内部对象的间隔
Vlay->addWidget(ui.head);   //布局器添加布局的对象
Vlay->addWidget(ui.body);

auto Hlay = new QHBoxLayout;
ui.body->setLayout(Hlay);
Hlay->addWidget(ui.left);
Hlay->addWidget(ui.cams);
Hlay->setContentsMargins(0, 0, 0, 0);

三、拖动和缩放

1. 拖动功能

QT自带标题栏是可以实现拖动效果的,但自定义标题栏就需要自己实现拖动效果

static bool MousePress = false;	//鼠标是否按下
static QPoint MousePoint;	//点击的位置

void XViewer10::mousePressEvent(QMouseEvent* ev)
{
    MousePress = true;		//记录按下的状态
    MousePoint = ev->pos();	//记录鼠标的位置
}

void XViewer10::mouseReleaseEvent(QMouseEvent* ev)
{
    MousePress = false;	//记录鼠标的状态
}

void XViewer10::mouseMoveEvent(QMouseEvent* ev)
{
    //若鼠标未按下
    if (!MousePress)
    {
        QWidget::mouseMoveEvent(ev);	//执行其本来的时间
        return;
    }

    this->move(ev->globalPos() - MousePoint);	//当前点击点与窗口初始位置根据相对位置来移动
}

2. 最大化和最小化

  1. 定义槽函数
//最大化窗口槽函数
void XViewer10::MaxWindow()
{
    ui.max->setVisible(false);  //最大化图标不可见
    ui.normal->setVisible(true);    //普通图标可见
    this->showMaximized();      //当前窗口最大化
}

void XViewer10::NormalWindow()
{
    ui.normal->setVisible(false); 
    ui.max->setVisible(true);  
    this->showNormal();      
}
  1. 绑定信号和槽
    在这里插入图片描述

四、右键菜单调整预览窗口

1. 右键菜单显示窗口数量

  1. 定义右键的菜单,并添加菜单的选项
//定义一个菜单
QMenu left_menu;

auto m = left_menu.addMenu(C("视图"));    //给菜单添加一个菜单
auto a = m->addAction(C("1视图"));   	 //给菜单添加一个选项
connect(a, SIGNAL(triggered()), this, SLOT(view1()));	//定义点击选项后的槽函数
a = m->addAction(C("4视图"));
connect(a, SIGNAL(triggered()), this, SLOT(view4()));
a = m->addAction(C("9视图"));
connect(a, SIGNAL(triggered()), this, SLOT(view9()));
a = m->addAction(C("16视图"));
connect(a, SIGNAL(triggered()), this, SLOT(view16()));
  1. 重载右键的处理事件
//当点击右键后会执行以下处理
void XViewer10::contextMenuEvent(QContextMenuEvent* ev)
{
	//将鼠标的位置交给菜单处理,菜单会在鼠标的位置显示出来
	//菜单具体的处理取决于left_menu内部的实现
	left_menu.exec(QCurser::pos());
	ev.accpet();	//事件处理结束
}

2. 预览窗口的显示

static QWidget *cam_wids[16] = { nullptr };	//定义存储窗口的仓库
void XViewer10::view(int count)
{
	//初始化布局器
	auto GLay = ui.cams->layout();
	if(!GLay)
	{
		GLay = new QGridLayout();
		GLay.setContentMargins(0, 0, 0, 0);
		GLay.setSpacing(5);
		ui.cams->setLayout(GLay);
	}
	
	//根据传入的窗口数量添加显示的窗口
	int col = sqrt(count);	//获取列数
	for(int i = 0; i < count; i++)
	{
		if(!cam_wids[i])
		{
			cam_wids[i] = new QWidget();
			cams[i]->setStyleSheet("background-color: rgb(0, 0, 0);");			
		}
		//添加到布局器
		GLay.addWidget(cam_wids[i], i / col, i % col);
	}
	
	//根据当前的视图数量,清除无效的窗口
	for(int i = count; i < sizeof(cam_wds) / sizeof(QWidget *); i++)
	{
		if(cam_wds)
		{
			delete cam_wds[i];
			cam_wds[i] = nullptr;			
		}
	}
}

五、相机列表的增删改

1. 相机的添加

  1. 添加一个按钮,对应槽函数是生成一个对话框
  2. 设置对话框
创建一个对话框
QDialog dialog(this);
dialog.resize(400, 200);
创建对话框的布局器
QFormLayout layout;
dialog.setLayout(layout);
创建布局的对象————输入栏
QLineEdit nameline;
layout.addRow(C("名称"), nameline);
QLineEdit urlline;
layout.addRow(C("码流"), urlline);
QLineEdit sub_url_line;
layout.addRow(C("辅码流"), sub_url_line);
QLineEdit saveline;
layout.addRow(C("存储路径"), saveline);
创建保存按钮对数据进行保存

将数据保存在config中

刷新左侧列表


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本论文通过对于用户界面设计的认识和触摸屏界面的了解,其中包括自身使用体会、他人的评价和感想、设计人员的资源共享等,发现了在触摸屏界面设计上存在的问题,深感触摸屏界面可用性的重要性以及在设计中人力物力投资的重复性,从而得出了为触摸屏界面提供一套通用的设计原则的必要性。   文章开篇第一章首先说明了一下研究背景、目的、意义及方法。   接着在第二章介绍了触摸屏和界面设计的基本概念,包括触摸屏的起源、发展、技术、使用范围以及有关界面设计的方方面面。   然后在第三章列出并参照一些有关界面设计的理论原则、可用性的基本理念、人因工程学和用户研究方法等。   在第四章里,通过各种设计案例的比较和分析以及对已有理论原则的推导,同时又受到用户界面管理程序的启示,设想了一套触摸屏界面通用设计原则,使之能最大限度的适用于各种不同的触摸屏界面设计之中。   在第五章中,通过“纺织车间通风系统触摸屏设计”这个相关项目的设计操作来对以上构想进行论证。设计论证过程包括对此设计项目建立研究模型、需求调研和可用性设计指标设定等,然后把经分析得出的关于此项目的可用性设计指标和之前提出的触摸屏界面通用设计原则构想进行对比,查看出入点,随后做出原型设计并提交用户做可用性评估,然后发现问题进行适当的补充改进设计,再次提交测评……通过这个循环的设计过程之后,证明了之前所提出的触摸屏界面通用设计原则构想基本上是准确的、合理的,并且对此原则进行适当的补充完善使之成为一种科学的原则。   最后第六章中,把之前论证的研究结论具体化简明化的罗列出来并且再提出对未来研究的展望。   用户界面设计已经历了两个界限分明的时代,第一代是以文本为基础的交互, 如字符、命令等,难用且不灵活,典型代表就是计算机的 MS-DOS 磁盘操作系统(图 001)。第二代则是更直观的图形操作界面,它引出更自然的视觉通信交互,典型代表就是计算机的视窗(Windows)操作系统。   在计算机诞生的早期,用户操作计算机是基于 1981 年问世的 MS-DOS 磁盘操作系统, DOS 作为一个字符型的操作系统,一般的操作都是通过命令来完成。由于 DOS 系统需要有一定专业知识的人或者是经过一定培训的人员才能操作,所以它的致命缺点就是不能使得计算机得以普及。   之后,美国的微软(Microsoft)公司从 1983 年底开始研制视窗(Windows)操作系统,最初的研制目标是在 MS-DOS 的基础上提供一个多任务的图形用户界面 。第一个版本的 Windows 1.0 于 1985 年问世,它是一个具有图形用户界面的系统软件。之后,不断的推出了比之前更加功能强大、操作灵活的图形操作系统,依次如:Windows 95、Windows 98、Windows 2000 和目前至少在中国使用最广的 Windows XP。视窗(Windows)操作系统出来之前,电脑上看到的只是枯燥的字幕数字(DOS),微软(Microsoft)公司开发的视窗(Windows)操作系统,使我们对电脑的应用更直接,更亲密,更易用。可以说,是由于图形用户界面的产生使计算机的使用得以正真意义上普及。   当然,用户界面设计不仅仅只是计算机操作系统如此狭义的一个概念。比如,随着互联网时代到来而产生的网页的界面,各种游戏和软件的界面,移动电话的操作界面以及触摸屏界面等,都是属于用户界面设计的范畴。   用户界面是人与机器之间交流、沟通的层面。用户界面设计发展至今,从刚开始的单纯考虑设备的控制和运作逐渐转变为同时对人的情感需求进行考虑,到目前已经形成了一种“以人为中心”的设计理念,即使产品达到简单使用和愉悦使用的设计目的。所以说,用户界面设计不单纯是平面设计,它还是一门牵涉到用户行为学、认知心理学、色彩心理学、人因工程学、社会学、语言学等一系列交叉学科的综合性学科。   用户界面设计经历了上面两代的摸索和发展,下一代则趋向于交互多媒体集成方法,就是人机交互需要大量使用语言和高级图形,也可使用其它交互媒体,如人的动作、手势和三维图像等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值