• 12247阅读
  • 38回复

请问一下怎么加窗口左上角的图标和任务栏上的图标? [复制链接]

上一主题 下一主题
离线darlings
 

只看楼主 正序阅读 楼主  发表于: 2010-04-13
.exe的图标已经加了,但是窗口上的图标还是默认的那个很难看的。
用 app.setWindowIcon(QIcon("MyIcon.ico"));后还是没换成自己的图标,请各位老师指点一下吧。
离线reyn

只看该作者 38楼 发表于: 2014-09-21
试过,完全没有问题。

题主应该是路径问题,试着把图片加到资源中,用资源路径来显示看看。

这部分32楼写的很清楚了。
you take your love.
离线eletomboy

只看该作者 37楼 发表于: 2014-09-11
試試這個吧

相對路徑:
"..\\MyIcon.ico"
离线darlings

只看该作者 36楼 发表于: 2010-04-14
汗,图标不换了,谢谢各位老师的热情帮助。。。
离线benbenmajia

只看该作者 35楼 发表于: 2010-04-14
呃,大家争取
安然.....
离线yangfanxing
只看该作者 34楼 发表于: 2010-04-14
这个问题要是能盖上个50L就厉害了~~~
PHPWind好恶心。。。不想看这种界面。。。
离线darlings

只看该作者 33楼 发表于: 2010-04-14
在main里应该可以,因为我在网上看到不少人都是用这种方法换图标的。
还有就是我用VC2008编译的QT,好像没有那个.pro文件。
离线darlings

只看该作者 32楼 发表于: 2010-04-14
确实是不用加'/'的,加了以后编译出错,说找不到.ico文件了。
离线yangfanxing
只看该作者 31楼 发表于: 2010-04-14
faint!
没用绝对路径试过啊???

非要这么做的话:::
典型的资源文件:
  1. <!DOCTYPE RCC><RCC version="1.0">
  2. <qresource>
  3.     <file>images/actualsize.png</file>
  4.     <file>images/fitwindow.png</file>
  5.     <file>images/present.png</file>
  6.     <file>images/print.png</file>
  7.     <file>images/rotate_left.png</file>
  8.     <file>images/rotate_right.png</file>
  9.     <file>images/zoomin.png</file>
  10.     <file>images/zoomout.png</file>
  11.     <file>images/next.png</file>
  12.     <file>images/previous.png</file>
  13.     <file>images/copy.png</file>
  14.     <file>images/open.png</file>
  15. </qresource>
  16. </RCC>

images为工作目录下子文件夹;
引用如:
  1. QIcon(":/images/open.png")

你那样写肯定不对!

【必须的操作】
1、在main函数中强制初始化资源Q_INIT_RESOURCE(filename);如:

int main(int argc, char *argv[])
{
    Q_INIT_RESOURCE(filename);
    //资源定义宏

    ...
}

2、在工程文件*.pro中添加行:
RESOURCES += application.qrc

准备工作完全没做好!还有你的代码添加位置在Main里可以吗?我一般习惯在主窗口的初始化函数下写。
PHPWind好恶心。。。不想看这种界面。。。
离线benbenmajia

只看该作者 30楼 发表于: 2010-04-14
/应该为\,windows下貌似是这么说,前者为父文件夹,后者为子文件夹
安然.....
离线darlings

只看该作者 29楼 发表于: 2010-04-14
确实是不用加'/'的,加了以后编译出错,说找不到.ico文件了。
离线darlings

只看该作者 28楼 发表于: 2010-04-14
我的是WINDOWS,应该是对的吧。。。那我再去改一下试试。
因为如果路径不对的话,rc文件编译就会出错的。
离线benbenmajia

只看该作者 27楼 发表于: 2010-04-14
linux下为./XXX/XXXX
安然.....
离线benbenmajia

只看该作者 26楼 发表于: 2010-04-14
我的意思是:路径是这么表示的吗?相对路径?windows还是linux?
windows下我记得相对路径的表示方法是 /wenjianjia/ziwenjian/wenjian
你确定你这么写路径是对的?
安然.....
离线darlings

只看该作者 25楼 发表于: 2010-04-14
引用第24楼benbenmajia于2010-04-14 14:24发表的  :
icon/eduu.ico这个是路径吗?......


恩,icon是项目下的一个文件夹,eduu.ico是我想显示的图标文件。
离线benbenmajia

只看该作者 24楼 发表于: 2010-04-14
icon/eduu.ico这个是路径吗?......
安然.....
离线darlings

只看该作者 23楼 发表于: 2010-04-14
用的是VC2008编译的,RC文件如下:
// Microsoft Visual C++ generated resource script.
//
#include "resource1.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// 中文(中华人民共和国) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
    "resource1.h\0"
END

2 TEXTINCLUDE
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1               ICON           DISCARDABLE         "icon/eduu.ico"
#endif    // 中文(中华人民共和国) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED


在main函数里:
    QApplication app(argc, argv);
    QIcon icon("icon/eduu.ico");
    app.setWindowIcon(icon);

在各个窗口的构造函数里也是一样。
离线浪漫天使
只看该作者 22楼 发表于: 2010-04-14
faint,多说无用,上代码
离线benbenmajia

只看该作者 21楼 发表于: 2010-04-14
你看看是不是资源文件的什么东西不对,再不行建议把资源删掉,重新加载
安然.....
离线darlings

只看该作者 20楼 发表于: 2010-04-14
引用第19楼benbenmajia于2010-04-14 11:09发表的  :
你用相对路径试试

各种路径全试过了都不行。。。
离线benbenmajia

只看该作者 19楼 发表于: 2010-04-14
你用相对路径试试
安然.....
离线darlings

只看该作者 18楼 发表于: 2010-04-14
引用第17楼yangfanxing于2010-04-14 10:16发表的  :
类的初始化函数啊;你应该添加对地方了。。。
我试了下我的,没问题,就+这么一行代码,嗯!

你是用什么编译的?我是用VC2008编译的,确实不行呀。。。
离线yangfanxing
只看该作者 17楼 发表于: 2010-04-14
引用第16楼darlings于2010-04-14 10:00发表的  :
我现在不知道是哪里的问题啊。。。窗口初始化是在哪个函数里啊?我找不到啊。

类的初始化函数啊;你应该添加对地方了。。。
我试了下我的,没问题,就+这么一行代码,嗯!
PHPWind好恶心。。。不想看这种界面。。。
离线darlings

只看该作者 16楼 发表于: 2010-04-14
我现在不知道是哪里的问题啊。。。窗口初始化是在哪个函数里啊?我找不到啊。
离线yangfanxing
只看该作者 15楼 发表于: 2010-04-13
引用第14楼eclair899于2010-04-13 19:01发表的  :
把你的图标名字换成系统自带的名字,然后替换系统自带的,重新编译

不解。。。

反正在主程序窗口初始化里是完全可以添加成功的~
PHPWind好恶心。。。不想看这种界面。。。
离线eclair899
只看该作者 14楼 发表于: 2010-04-13
把你的图标名字换成系统自带的名字,然后替换系统自带的,重新编译
离线yangfanxing
只看该作者 13楼 发表于: 2010-04-13
引用第12楼darlings于2010-04-13 17:52发表的  :
放个根本不存在的.ico也不会得到NULL的。。。


what a suprise!
It cann't be like this...
PHPWind好恶心。。。不想看这种界面。。。
离线darlings

只看该作者 12楼 发表于: 2010-04-13
不管我QIcon构造函数里放什么路径,得到的对象都是固定的值,放个根本不存在的.ico也不会得到NULL的。。。
离线yangfanxing
只看该作者 11楼 发表于: 2010-04-13
引用第10楼darlings于2010-04-13 15:22发表的  :
我换成了绝对路径还是一样。。。
    QIcon i1 = this->windowIcon();
    setWindowIcon(QIcon(":F:\\code\\icon\\MyIcon.ico"));//这是什么?
    QIcon i2 = this->windowIcon();
但是不知道在什么地方调用才对啊。。。除了构造函数想不到其它地方了。


引用第9楼yangfanxing于2010-04-13 15:11发表的  :

只可能是这个吧。。。再推下来很可能还是路径的问题。。。——呃。。。偶打包票是路径的问题!
QIcon("MyIcon.ico") //is this NULL? & I guess it can be...
//这个你没查。
PHPWind好恶心。。。不想看这种界面。。。
离线darlings

只看该作者 10楼 发表于: 2010-04-13
我换成了绝对路径还是一样。。。
    QIcon i1 = this->windowIcon();
    setWindowIcon(QIcon(":F:\\code\\icon\\MyIcon.ico"));
    QIcon i2 = this->windowIcon();
但是不知道在什么地方调用才对啊。。。除了构造函数想不到其它地方了。
离线yangfanxing
只看该作者 9楼 发表于: 2010-04-13
引用第8楼darlings于2010-04-13 15:01发表的  :
调用的地方不对

只可能是这个吧。。。再推下来很可能还是路径的问题。。。——呃。。。偶打包票是路径的问题!
QIcon("MyIcon.ico") //is this NULL? & I guess it can be...
PHPWind好恶心。。。不想看这种界面。。。
离线darlings

只看该作者 8楼 发表于: 2010-04-13
I1 I2都不是空,但是图标还是默认的那个。。。
是我调用的地方不对么?我是在窗口的构造函数里调用的。
离线yangfanxing
只看该作者 7楼 发表于: 2010-04-13
调吧~~~
先看看QIcon i1 = this->windowIcon(); // is it NULL???

this->setWindowIcon()



QIcon i2 = this->windowIcon(); // is it NULL???
PHPWind好恶心。。。不想看这种界面。。。
离线darlings

只看该作者 6楼 发表于: 2010-04-13
引用第4楼yangfanxing于2010-04-13 11:07发表的  :
只能是你的路径不对。

路径没问题啊,开始用的绝对路径,现在用相对路径都是不行啊。。。
离线darlings

只看该作者 5楼 发表于: 2010-04-13
我是用VC2008建了一个.rc文件,里面加了一行 IDI_ICON1               ICON                    "icon/eduu.ico"    现在.exe程序的图标是自己的了,但是窗口图标还是设置不成功。
离线yangfanxing
只看该作者 4楼 发表于: 2010-04-13
引用第2楼darlings于2010-04-13 10:31发表的  :
不行啊。。。我开始是写在main函数里,现在写天窗口的构造函数里,可是图标还是默认的那个。。。

只能是你的路径不对。
PHPWind好恶心。。。不想看这种界面。。。
离线szh1987
只看该作者 3楼 发表于: 2010-04-13
把图标文件编译进qt,具体操作时在资源文件目录,叫xxx.qrc中加入你的那个图标,然后再设置
离线darlings

只看该作者 2楼 发表于: 2010-04-13
不行啊。。。我开始是写在main函数里,现在写天窗口的构造函数里,可是图标还是默认的那个。。。
离线yangfanxing
只看该作者 1楼 发表于: 2010-04-13
嗯?
至少是this->setWindowIcon()吧???!!!
这样任务栏的图标就跟这个一样了~
PHPWind好恶心。。。不想看这种界面。。。
快速回复
限100 字节
 
上一个 下一个