QT中修改窗口的标题和图标
修改窗口标题
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目录下
本文来自博客园,作者:xingzaicpp,转载请注明原文链接:https://www.cnblogs.com/xingzaicpp/p/16667671.html