Closed GoogleCodeExporter closed 9 years ago
那么有几个问题要考虑:
1.
任务栏的图标到底要不要?这个是完全可选的,根据大家喜��
�来确定。
2. 如果要的话,到底该设置成什么图标?是 Libfetion
一直使用的图标,还是主题自定义图
标?
正是因为考虑一些皮肤的可定制性,所以我没有加程序窗口��
�标。如:
http://code.google.com/p/libfetion-gui/source/detail?r=445
但这回过头来又破坏了程序部分属性.
我觉得我们修改 fxwidgettitlebar.cpp,将里面的icon显示部分去掉,
而在主窗口里面还是设置为Libfetion 一直使用的图标。
这即不破坏程序皮肤的统一性,而在任务栏又可以显示LibFetio
n的统一标志.
你觉得这个如何?
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 9:40
我觉得我们修改 fxwidgettitlebar.cpp,将里面的icon显示部分去掉,
而在主窗口里面还是设置为Libfetion 一直使用的图标。
目前程序里面显示的系统标题栏,都是由fxwidgettitlebar.cpp来完
成的,既然这样。
我们可以考虑通过修改它来实现我们的目的. :)
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 9:41
好,我同意这样做,我尝试了一下,貌似可行。
但最好还是要确保修改它不会影响其它模块。
Original comment by solrex
on 13 Dec 2009 at 10:19
目前来看是会有影响的,比如聊天窗口的标题栏里,icon
就无法显示了。
不知道可否在 FxWidgetTitleBar::setWindowIcon(const QIcon &_icon)
函数中判断该 TitleBar 所属
的窗口是什么窗口?
如果是主窗口或者登录窗口,就不设置 title bar
icon;否则就设置 title bar icon。
Original comment by solrex
on 13 Dec 2009 at 10:26
聊天窗口也需要和主窗口一样显示的设置窗口的icon. :)
不知道可否在 FxWidgetTitleBar::setWindowIcon(const QIcon &_icon)
函数中判断该 TitleBar
所属的窗口是什么窗口?
这个是使用FxWidget封装过的窗口. 即可以使用皮肤覆盖的窗口.
那些窗口都是派生自FxWidget.
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 10:30
我想我们两个理解可能有误差,那我整理一下,看你的意思��
�不是这样:
1. 所有的 title bar 都不显示 icon,由皮肤来决定该显示 icon
的地方显示什么东西。
2. widget 还是应该有 icon,用来在任务栏显示,但不显示到
title bar。
3. 任务栏显示的 icon 都应该是 libfetion 的主 icon。
Original comment by solrex
on 13 Dec 2009 at 10:38
1. 所有的 title bar 都不显示 icon,由皮肤来决定该显示 icon
的地方显示什么东西。
2. widget 还是应该有 icon,用来在任务栏显示,但不显示到
title bar。
3. 任务栏显示的 icon 都应该是 libfetion 的主 icon。
是的. :)
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 11:30
记录我和solrex在gtalk上有关这个issue的讨论.
Wenbo: 皮肤设置主窗口title bar的icon,好像是不通过那个函数的
6:42 PM
FxWidget::setWindowIcon
6:43 PM
就是如果你把title bar中设置title bar icon的那句话注释掉
主窗口的 title bar icon 还可以显示皮肤的自定义 icon
50 minutes
7:34 PM
me: 是的
Wenbo: 那还有一些其它的地方可能需要改
me:
那个icon可以在皮肤里面配置,皮肤可以通过CSS来控制程序icon
Wenbo: 对话框的 css 可能要修改
me: 你可以查看皮肤文件的style.css
7:35 PM
里面有个mainWindow #icon
这个是通过CSS来控制icon
如果我们觉得不需要了,我们可以把它从那里删掉. :)
Wenbo: 比如 FxMsgWindow::setCurrentTabTitle 中
就有修改对话框的 title
7:36 PM
和 icon
这个不是通过css控制的
也不是说不是通过css控制
me: 嗯,这个是为了体现当前聊天用户的在线状态
CSS是初始化状态的.
Wenbo: 但是是通过调用那个函数来显示 title icon
me: 但最终状态是看最后谁设,就是谁的
Wenbo: 如果那个函数不修改 title icon,那么这个 title
bar就显示不出来了
7:37 PM
这个 title bar 的 icon
me: 在皮肤里设置icon
7:38 PM
只有主窗口的ICON被设置了,在皮肤里面
而聊天窗口没有设置,
而且有些皮肤的css写得不是很好,所以.
Wenbo: 那么如果不让那个函数设置 title icon
7:39 PM
聊天窗口也就没 icon 了
me: 那个函数还是要设置的. :)
而且还是使用系统的
Wenbo: 聊天窗口的 icon 使用系统的 icon?
7:40 PM
那聊天状态怎么显示?
7:41 PM
me: 我想想. :)
7:42 PM
你指的聊天状态是?
Wenbo: 就是聊天时候会闪烁吧
还是会变化,我记得
就是在左上角
7:43 PM
在聊天窗口左上角显示的icon,会显示对方状态的变化
在线,不在线或者忙碌
me: 嗯,
这个目前是使用皮肤的状态
Wenbo: 对
7:44 PM
而且不同皮肤的图标是不一样的
me: 嗯,
Wenbo: 其实我们关注的只是 主窗口 和 登录窗口 的问题
me: 那只能这样了
Wenbo: 如果这两个问题能解决,就不用动其它的。
7:45 PM
me: 我觉得最好的方式是:
任务栏的icon使用libfetion的系统的,而显示在窗口的icon则使用
皮肤的
这样可能需要改动不少代码.
Wenbo: 对
titleBar->setWindowIcon(icon);
QWidget::setWindowIcon(icon);
这里有两句
7:46 PM
其实这两句就应该是对应的titlebar和任务栏的icon吧?
me: 嗯
Wenbo: 聊天窗口的任务栏和标题栏其实一样完全没有问题
现在的代码就是这样
7:47 PM
我们需要区分的是主窗口的任务栏和标题栏
我在尝试不知道 typeid
可否探测出来this指针所属的类
me: 不用这么麻烦
7:48 PM
Wenbo: 或者说从 object name 来判断
me: 那个类都是派生自fxwidget了,
属性是一样的,对于任何窗口来说
7:49 PM
Wenbo:
虽然都是从基类派生,如果能判断是哪个派生类,就可以对��
�同的派生类做不同的区分了
或者增加一个属性,这个属性显示该类是主窗口还是其它窗��
�
me: 可以把那函数差分成两个
7:50 PM
不是,将那个函数后面的 QWidget::setWindowIcon(icon);
去掉
并且将这个函数改动名称表示只是修改显示的windowIcon,
而要显示系统的icon则还是调用setWindowIcon(
7:51 PM
这样的话,每次设置可能需要调用两个函数
你觉得这个如何?
Wenbo: 这样也可以
这样就跟原始的函数名保持一致了
me: 嗯,
Wenbo: 专门分开出来一个函数来设置 title icon
7:52 PM
me: 是的. :)
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 11:57
这个 Issue 在 revision 470 被 Fix,请验证。
如有问题,请重新 Open。
Original comment by solrex
on 13 Dec 2009 at 4:25
非常好. :)
自从我们增加了setTitleBarIcon函数,也许下面的函数可以删除��
�. :)
void FxWidget::setWindowIcon(const QIcon &icon)
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 6:23
r471 删除.
void FxWidget::setWindowIcon(const QIcon &icon)
我已在ubuntu上验证这两个patch成功.
change status to verified.
Original comment by libfet...@gmail.com
on 13 Dec 2009 at 6:33
Original issue reported on code.google.com by
solrex
on 13 Dec 2009 at 9:02Attachments: