首页 > 其他分享 >QT中修改窗口的标题和图标

QT中修改窗口的标题和图标

时间:2022-09-07 23:24:20浏览次数:61  
标签:窗口 QT 代码 标题 QTextCodec logo MainWindow png 图标

修改窗口标题

QT的窗口默认名字是MainWindow,在这里介绍两种方法修改窗口的Title

1.直接通过UI设计器修改:

我修改成了"我的窗口"运行后,显示如下:

好了,我们需要去找下,"我的窗口"这个字符串被QT放在哪里的?
用文本编辑器打开mainwindow.ui,可以看出,实际上是放在这个XML里面了

这个XML文件会被编译成代码(C#也是如此,不知道他们谁COPY谁)
找到build-ModifyTitleAndLogo-unknown-Debug\ui_mainwindow.h这个文件,打开,会发现有这样代码:

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "\346\210\221\347\232\204\347\252\227\345\217\243", 0, QApplication::UnicodeUTF8));
        pushButton->setText(QApplication::translate("MainWindow", "PushButton", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

346 210 221...243这些是什么呢?我猜是"我的窗口"的UTF8描述,因为一个中文用三个BYTE来表示,核对了一下UTF8编码,不是的
我又猜是UNICODE,但微软的UNICODE是一个汉字用两个BYTE表示,个数对不上,值也对不上,
我想,正如他代码写的那样,大概就是"我的窗口"的UnicodeUTF8的表述吧,这种编码在我的实际编程中没有遇到过,但这个并不影响理解.


2.直接用代码修改:
UTF-8编码早就大行其道了,C#的代码默认是UTF-8的,各种WEB也基本都是UTF-8,那我们就统一使用UTF-8
在函数的入口处,增加如下代码,同时包含头文件   #include <QTextCodec>

    QTextCodec *codec = QTextCodec::codecForName("UTF-8");    //获取系统编码
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);

然后就可以在代码中支持设置窗口的标题了,设置的方法非常简单
代码是: setWindowTitle("带LOGO的窗口");

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setWindowTitle("带LOGO的窗口");
}

修改窗口图标

准备好一个文件logo.png
对项目点右键,添加新文件

选Qt->Qt Resource File -> choose

命名可以命名一个你喜欢的名字,我在这里命名为myres

进入编辑myres.qrc的界面:
添加->添加前缀
前缀用/线

然后点添加->添加文件,先择刚刚准备好的logo.png(注意:我的logo.png是放在项目根目录res目录下的)

然后用CTRL+S保存一下
回到设计MainWindow的界面设置器上,如下操作:

大功告成!

接下来,需要小小地思考一下,logo.png被QT放到哪儿去了?
实际上,我认为是放在EXE文件里去了,用16进制工具打开exe,搜索PNG,有两处
1.logo.png的文件名
2.logo.png的文件头PNG
如下:

代码见 http://q1024.com/files/qt_window-master.zip  000100目录下

 

标签:窗口,QT,代码,标题,QTextCodec,logo,MainWindow,png,图标
From: https://www.cnblogs.com/xingzaicpp/p/16667671.html

相关文章

  • Qt5.14.2使用虚拟键盘
    说明这是关于Qt5(Qt5.1.4.2),QWidget编程使用Qt虚拟键盘(qtvirtualkeyboard)Tag:QT5,Qt,软件盘、虚拟键盘,Widget程序,QML 作者:[email protected] 关键代码启用虚拟键盘......
  • Qt 信号槽连接不成功问题原因汇总
    1.拥有信号槽的类,必须继承QObject,声明Q_OBJECT宏。Qt帮助手册里搜索 “Signals&Slots”,可以看到以下说明:想要使用信号槽,必须继承QObject,必须加Q_OBJECT宏。2.信号......
  • 直播平台源代码,uniapp中样式的学习及如何使用scss和字体图标
    直播平台源代码,uniapp中样式的学习及如何使用scss和字体图标uni-app中的样式rpx即响应式px,一种根据屏幕自适应动态单位。以750宽的屏幕为基准,750rpx恰好为屏幕宽度。屏......
  • QT之QCompleter的用法--- 最简单的使用方法
    本文讲解最简单的使用方法:QCompleter能实现自动填充功能,方便用户输入,提升用户的体验,一般和QLineEdit与QComboBox搭配起来使用.先来个最简单的示例:QStringListword_l......
  • qt中json字符串的读写
    1、json字符串: 2、写json:  3读json:  ......
  • QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析
    在分析之前,先吐槽下M$的MFC,竟然没有相对布局!(至少我不知道,每次都是代码中控制布局),(2022-09-07星仔批注,MFC从VS2015开始就有布局了,功能精炼)M$这么多年,也不发展......
  • [转载]Qt内存泄漏总结(包括检测工具)
    原文链接:http://blog.csdn.net/taiyang1987912/article/details/29271549关于堆栈不清楚的可以参考这篇文章:http://blog.csdn.net/c_base_jin/article/details/25558929一......
  • [转]QT designer中的快捷键
    今天看了看QtDesigner的帮助文档,里面提到了不少快捷键,相信在以后会用的比较多。和大家分享一下:F2:编辑控件名称F3:进入QWidget编辑模式F4:进入SIGNAL/SLOT编辑模式Ctrl+R......
  • QT4.8.6+mingw+qtcreator4.13.3 搭建环境+调试QT源码
    本文测试环境:win7x64由于考虑到跨平台的原因,本安装不基于visualstudio的插件来安装,这样的开发环境和linux更接近.三个文件请准备好:i686-4.8.2-release-posix-dwarf-r......
  • QT Edit Buddies的理解
    这个是用于设置QLabel的buddy的。在这个模式下,可以把QLabel跟其它控件连起来。QLabel可以设置快捷键,当按下快捷键后,窗口焦点就移动到与它连接扩控件上。比如一个QLabel显示......