QT文件解析与乱码问题
目录
文件解析
输出乱码问题
文件解析
.pro
.pro文件是工程文件,他是qmake自动生成得用于生产makefile得配置文件。
widget.h
- 若要使用 Qt 的信号与槽(signal 和 slot)机制,类中必须加入
Q_OBJECT
宏。 - 代码中
Ui::Widget *ui;
是指向可视化设计界面的指针,通过它可以访问界面上的所有组件。 - 包含了
QWidge
头文件,Widget
类继承自QWidget
。
main.cpp
- 新建 Qt 工程后自动生成的代码结构:
- 包含头文件
widget.h
和QApplication
(应用程序类头文件)。 main
函数中创建QApplication
对象a
(一个 Qt 图形界面应用程序有且仅有一个该对象),用于管理应用程序的控制流和主要设置,包含主事件循环。- 实例化窗口对象
Widget w
,调用w.show()
显示窗口。 - 通过
a.exec()
进入消息循环,等待用户输入并响应事件,此时main
函数将控制权转交给 Qt,处理完所有事件后应用程序退出。
- 包含头文件
widget.ui
widget.ui
是 Qt 工程中的窗体界面定义文件,属于 XML 格式。它用于定义窗口上所有组件的属性设置、布局以及信号与槽函数的关联等。开发者可通过 UI 设计器进行可视化界面设计,Qt 会自动将设计内容解析并以该 XML 文件形式保存,开发者无需关注其生成细节。
输出乱码问题
如下图所示,我们定义了一个自己得label类,通过cout打印发现输出结果是乱码。
代码
mylabel.h
#ifndef MYLABEL_H
#define MYLABEL_H
#include<QLabel>
#include<QWidget>
class mylabel : public QLabel
{
public:mylabel(QWidget*parent);~mylabel();
};#endif // MYLABEL_H
mylabel.cpp
#include "mylabel.h"
#include<QDebug>
#include<iostream>
mylabel::mylabel(QWidget *parent):QLabel(parent)
{}mylabel::~mylabel()
{//std::cout<<"程序结束"<<std::endl; -1//qDebug()<<"程序结束"; -2
}
输出现象
出现乱码得原因是汉语得编码标准不同,qt采用的编码编码标准是utf-8,而iostream采用的是gbk编码标准,因此出现乱码现象。
解决方法是使用QT内置函数qDebug。
qDebug()
是用于调试信息输出的核心工具,属于 Qt 核心模块(Qt Core)的一部分,主要用于开发阶段打印变量值、执行流程、错误提示等调试内容,帮助开发者定位问题。它的使用灵活且功能丰富,同时支持跨平台(Windows、Linux、macOS 等),输出内容会根据不同的运行环境显示在对应的调试终端中(如 Qt Creator 的 “应用程序输出” 面板、Windows 的控制台、Linux 的终端等)。