qq系统设置在哪。

114网址导航【大话QT之八】模拟QQ系统设置面板实现功能 - 推酷
【大话QT之八】模拟QQ系统设置面板实现功能
业务需求:
&&&&&&&& 基于网盘客户端的实现,原有网盘的设置面板无论从界面显示还是从业务需求都不能满足我们的正常需求。当前的要求是,模拟QQ系统设置的面板实现当前我们网盘中的基本配置功能。在完成这篇文章时已将基本功能实现完成,虽未整合进网盘客户端中,但基本技术预演已经实现。
QQ系统设置面板分析:
&&&&& QQ系统设置面板效果图:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&& QQ系统设置面板功能描述:
&&&&&& 由于存在较多的配置,如果每个模块的配置项都设计到一个窗体中,则会存在很多的窗体,不太符合用户的使用体验,且程序编写也比较麻烦。QQ系统设置面板中的实现是,所有的配置项均列在右侧区域中,当移动右侧的滚动条的过程中,如果对应的面板出现则在左边的导航中对应的标题也显示点击的效果。同时,单独点击左侧的导航,右面的区域也显示对应导航的配置项。
实现思路:
&&&&&&& 左侧:
&&&&&&&&&&&&&&&& 左侧导航的实现很简单,使用QListWidget完全可以满足我们的需求,至于当点击左侧时右侧显示对应模块的配置项则需要我们添加处理代码完成。
&&&&&&& 右侧:
&&&&&&&&&&&&&&&& 由于右侧存在导航栏,因此右侧的区域需要使用QScrollArea控件,这里需要注意两点:1& 在QScrollArea控件中每个模块的配置需要放在一个单独的QWidget中,只& 有这样我们在移动滚动条经过某个某块的配置项时才可以识别到。2& 在实现滚动条效果时,看到网上有很多文章说滚动条效果无法实现出来,其实我的做法很简单,在ui窗体中将QScrollArea拖入窗体中,然后设置改窗体的属性:widgetResizable为不选中,即false状态。如果你的QScrollArea是在代码中new出来的,则它默认的widgetResizable是true,必须在代码中将它设置为false才行。
& & & & & & & & 为了直观地说明第一个注意点,在我测试的UI窗体中QScrollArea区域中防止了多个QWidget(每个模块配置对应一个QWidget),贴图如下:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& & & & 到这里我们面临的问题就是:
&&&&&&& 1. 当拖动滚动条时如何判断经过某个QWidget,从而显示左侧的对应项?
& & & & & && 首先,需要绑定垂直滚动条的valueChanged事件,这样我们才能随时的监控它的移动变化;其次,利用QWidget的visibleRegion()方法,官方关于这个函数的解释是“当paint事件出现的时候返回它清晰的范围,对与可见的widget,它是一个没有被其它widget覆盖的近似的范围;反之返回一个空的范围”,通过调用QWidget的visibleRegion().isEmpty() 就可以确定出当前滑动过的区域。
&&&&&&& 2. 当点击左侧的导航时,右侧区域如何定位到对应的配置模块?
&&&&&&&&&&&& 首先,需要绑定QListWidget的itemClicked事件,这样我们才能监控到点击事件;其次利用QScrollBar的setSliderPosition()方法设置滚动调到特定模块的位置。
&&&&&&& 3. 由于绑定了滚动条的valueChanged事件,又在itemClicked事件中设置了滚动条的问题,那么在设置位置的同时不也同样触发valueChanged事件吗?
&&&&&&&&&&& 需要一个变量来标记,本次valueChanged事件是由于setSliderPosition方法引起的。
关键代码段:
1. 绑定QScrollArea的valueChanged事件和QListWidget的itemClicked事件
void LHTSettingsBoard::SetupUi()
m_scroll = qFindChild&QScrollArea *&(m_wgtMain, &scrollArea&);
m_widget_login = qFindChild&QWidget *&(m_wgtMain, &widget_login&);
m_widget_register = qFindChild&QWidget *&(m_wgtMain, &widget_register&);
m_widget_network = qFindChild&QWidget *&(m_wgtMain, &widget_network&);
m_widget_password = qFindChild&QWidget *&(m_wgtMain, &widget_password&);
m_listWidget = qFindChild&QListWidget *&(m_wgtMain, &left_navigation&);
connect((const QObject*)m_scroll-&verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(valueChanged(int)));
connect(m_listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(itemClicked(QListWidgetItem*)));
QListWidgetItem *loginItem = m_listWidget-&item(0);
loginItem-&setSelected(true);
m_wgtMain-&show();
2. 响应valueChanged事件的槽,完成移动滚动条时,当某个面板出现时触发左侧QListWidget中item的选中事件
void LHTSettingsBoard::valueChanged(int value)
QListWidgetItem *loginItem = m_listWidget-&item(0);
QListWidgetItem *registerItem = m_listWidget-&item(1);
QListWidgetItem *networkItem = m_listWidget-&item(2);
QListWidgetItem *passwordItem = m_listWidget-&item(3);
if (!m_sign)
if (!m_widget_login-&visibleRegion().isEmpty())
loginItem-&setSelected(true);
loginItem-&setSelected(false);
if (!m_widget_register-&visibleRegion().isEmpty())
registerItem-&setSelected(true);
registerItem-&setSelected(false);
if (!m_widget_network-&visibleRegion().isEmpty())
networkItem-&setSelected(true);
networkItem-&setSelected(false);
if (!m_widget_password-&visibleRegion().isEmpty())
passwordItem-&setSelected(true);
passwordItem-&setSelected(false);
3. 响应itemClicked事件的槽,完成点击QListWidget中的item时,QScrollArea中的滚动条移动到相应配置项的位置
void LHTSettingsBoard::itemClicked(QListWidgetItem *item)
QString itemText = item-&text();
qDebug() && itemT
if (pare(&Login&) == 0)
pos = m_widget_login-&pos();
m_scroll-&verticalScrollBar()-&setSliderPosition(pos.y());
else if (pare(&Register&) == 0)
pos = m_widget_register-&pos();
m_scroll-&verticalScrollBar()-&setSliderPosition(pos.y());
else if (pare(&Network&) == 0)
pos = m_widget_network-&pos();
m_scroll-&verticalScrollBar()-&setSliderPosition(pos.y());
else if (pare(&ChangePassword&) == 0)
pos = m_widget_password-&pos();
m_scroll-&verticalScrollBar()-&setSliderPosition(pos.y());
&&&&&&&& 通过以上就可以实现类似QQ系统设置面板的功能,开始我对这一块如何实现,使用什么控件完全不知道,共花了不到一天的事件查资料、试验才找到合适的方法。在这个过程中深刻地体会到解决问题最关键的地方在于思路,如果有了一个思路,哪怕别人告诉你应该朝着哪个方向走,后面的工作其实都是水到渠成很简单的了。慢慢享受这个过程,一个问题由完全不知道如何解决,到有思路,到真正解决。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致电脑教程子分类qq系统设置在哪平板电脑_百度知道营销QQ的营销QQ指定***和指定分组设置-qq教程-办公/数码-壹聚教程网营销QQ的营销QQ指定***和指定分组设置
什么是指定***
一个公司中使用营销QQ的***可能分属不同职位,如销售、售前咨询、售后等等,设置指定***以后,客户在打开会话窗口的时候会收到所有的***列表,客户可以根据需要选择***接受服务。
指定***功能在设置菜单中开启(图 1)。
图 1&设置菜单入口
在指定***功能中,企业可以根据实际需要选择&指定到人&或者&指定到分组&(图 2)。
图 2&设置-业务设置-指定***
设置&指定到***&以后,客户在QQ上打开会话窗口,会收到一个***列表(图 3),如果勾选上&不显示离线***&,则离线的工号在客户QQ的会话窗口将不予显示(图 2)。
图 3&QQ侧选择工号列表
如果设置&指定到***分组& (图 4),则个人QQ用户会收到一个分组列表(图 5)。
图 4&设置-指定***-指定到***分组
图 5&QQ侧选择分组列表
此处的***分组可以在&设置 & 系统设置 & ***分组&中添加(图 6),您可以在&营销QQ设置 & 系统设置 & 员工管理& (图7)中双击一条记录修改每个***的所属分组和与对外显示姓名(图 8)。
图 6&系统设置-***分组
图 7&员工管理
图 8&编辑员工信息
当开启指定***后,还可以选择设置长时间未响应提示。长时间未响应提示功能主要用于对长时间不回复客户的***予以提示,在***无法及时接待客户的时候允许客户重新选择***,能够帮助***更好地接待客户,避免了客户长时间等待,有助于企业提高服务质量。
无论是设置&指定到***&还是设置&指定到***分组&,都可以对长时间未响应提示进行设置(图2和图4)。勾选&如果15分钟***未响应,允许客户重新指定***&后,即开启长时间未响应提示。在下拉框中可选择响应时间,默认为15分钟。注意:当开启了独占客户,长时间未响应提示功能将不生效。
长时间未响应提示根据***的离线和非离线状态可分为两种情况:
当***处于非离线状态时,在接近设定的时间之前***没有对客户做出响应,将收到提示(图9)。如果***在收到提示后立即做出响应,则提示消失。
图9&营销QQ会话窗口的长时间未响应提示
如果***收到提示后仍然没有做出响应,超过设定的时间,客户将收到可重新指定***的提示(图10)。
图10&***非离线下QQ侧的重新指定***提示
客户点击&选择其他***&后,将根据指定***的设置在提示下收到一个***列表或分组列表,默认不显示离线***或分组。如果指定***设置了&指定到***&,则收到一个***列表(图11),当指定***设置了&指定到***分组&,则收到一个***分组列表(图12)。
图11&***非离线下QQ侧重新指定***的选择***列表
图12&***非离线下QQ侧重新指定***的选择分组列表
当***处于离线状态时,客户打开与该***的聊天窗口时就会收到可重新指定***的提示,(图13)。
图13&***离线下QQ侧的重新指定***提示
客户点击&选择其他***&后,将根据指定***的设置在提示下收到一个***列表或分组列表,默认不显示离线***或分组。如果指定***设置了&指定到***&,则收到一个***列表(图11),当指定***设置了&指定到***分组&,则收到一个***分组列表(图12)。
客户成功选择其他***后,将自动关闭原***与该客户的会话,并在原***窗口的右下角弹出提示(图14),如果原***不在线,则在下次登录时弹出。
图14&***收到的客户已重新指定***的提示
营销QQ指指定分组?
设置=》指定***=》指定到***分组
图 5 QQ侧选择分组列表
此处的***分组可以在&设置-系统设置-***分组&中添加(图 6),您可以在&设置=》系统设置=》员工管理&中修改每个***的所属分组(图 7)与对外显示姓名(图 8)。
图 6 系统设置=》***分组
图 7 员工管理=》修改分组
图 8 员工管理=》对外显示姓名修改
上一页: &&&&&下一页:相关内容

参考资料

 

随机推荐