QT应用程序图标的定义

89 篇文章 5 订阅

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

参考:https://doc.qt.io/archives/qt-4.8/appicon.html
参考:https://stackoverflow.com/questions/1460361/how-to-set-application-icon-in-a-qt-based-project
参考:https://stuff.mit.edu/afs/athena/software/texmaker_v5.0.2/qt57/doc/qtcore/resources.html

 

应用程序有了图标之后,比较醒目的让大家能找到这个程序,所以是很有必要的。

定义方法一:qt的方式定义图标 

参考stackoverflow中的方法,定义时

1. 使用qt编译时,在qt工程的pro文件中添加一句话

RC_ICON += your_icon.ico

2. 另外还可以采用在程序中指定,可以指定的图标格式比较多,可以是ico,也可以是png或jpg

QApplication a(argc, argv);

a. 可以一句话指定:
a.setWindowIcon(QIcon("./images/icon.png"));

b. 还有一种方式是先把图片加入到qrc资源中,例如
<qresource>
      <file alias="icon.png">images/icon.png</file>
  </qresource>
然后指定
a.setWindowIcon(QIcon(":/icon.png"));

 

定义方法二:windows的方式定义 

该种方式加入了rc资源中,程序打包时会把ico打入程序中,后续程序执行不依赖png文件。

1. 首先新建/找一个ico文件,例如your_icon.ico,加入到工程中

2. 在项目中新建.rc文件(如label.rc)

放入这句话

IDI_ICON1       ICON        DISCARDABLE "your_icon.ico"

3. 重新编译程序,该图标就会作为程序的默认图标了

4. 可能会有疑问?为什么这样子就可以定义程序的图标了?

我理解这是一种默认的处理值:

对于mfc程序的默认图标用的是ID<128的最小icon的ID值;

对于qt程序也是类似的,qt通常使用的程序图标就一个,只要包含进去就可以了

 

一些问题:

1.  ico中文件可以放置多个大小不多,颜色位数不同的图标,程序的图标将使用哪一个?

例如

16*16颜色4位的

16*16颜色8位的

32*32颜色24位的

从我测试来看,程序会选取兼容位数最优的哪一个,最优的判断条件:大小,颜色位数越多越优

 

2.  添加了ico文件,编译却没有图标?

首先检查ico中有几个图标,最大size,颜色位数最多的那个是否绘制了图形;

其次检查访问的不是快捷方式—快捷方式的图标是不会被替换掉的;

不OK的话,按照定义方法重新定义一遍。

 

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt中,可以通过以下步骤来实现快捷方式图标的拖动: 1. 首先,确保你的Qt应用程序有一个主窗口或主界面,因为我们将在主窗口中添加快捷方式图标。 2. 在Qt的控件库中,有一个名为QShortcut的类,它可以用于创建快捷方式。你可以在主窗口的构造函数中创建一个QShortcut实例。例如: ``` QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+D"), this); ``` 3. 创建QShortcut实例后,你需要将其连接到一个具体的槽函数,这样当用户按下快捷键时,槽函数就会被调用。例如: ``` connect(shortcut, SIGNAL(activated()), this, SLOT(handleShortcut())); ``` 4. 现在,你需要实现handleShortcut()函数。这个函数将在用户按下定义的快捷键时被调用。在这个函数中,你可以执行自己的逻辑,比如拖动图标。 ``` void MainWindow::handleShortcut() { // 在这里实现快捷方式图标的拖动逻辑 } ``` 5. 在handleShortcut()函数中,你可以使用QDrag类来创建一个拖动操作。你可以使用QDrag类的setPixmap()方法来设置拖动过程中显示的图标。例如: ``` QDrag *drag = new QDrag(this); drag->setPixmap(QPixmap("icon.png")); ``` 6. 接下来,你需要调用QDrag类的exec()方法来启动拖动操作。你可以将一些额外的数据(如文本或文件路径)添加到拖动操作中。例如: ``` QMimeData *mimeData = new QMimeData; mimeData->setText("这是一个拖动操作"); drag->setMimeData(mimeData); Qt::DropAction dropAction = drag->exec(Qt::CopyAction); ``` 7. 最后,你可以在主窗口的dragEnterEvent()和dropEvent()函数中实现接受拖动操作的逻辑。这样,当用户将图标拖动到主窗口时,你就可以做一些处理。 ``` void MainWindow::dragEnterEvent(QDragEnterEvent *event) { event->acceptProposedAction(); } void MainWindow::dropEvent(QDropEvent *event) { // 在这里处理接受拖动操作的逻辑 } ``` 通过以上步骤,你可以实现在Qt中拖动快捷方式图标的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春夜喜雨

稀罕你的喜欢!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值