QT文件解析与乱码问题

目录

文件解析

输出乱码问题


文件解析

.pro

.pro文件是工程文件,他是qmake自动生成得用于生产makefile得配置文件。

widget.h

  • 若要使用 Qt 的信号与槽(signal 和 slot)机制,类中必须加入Q_OBJECT宏。
  • 代码中Ui::Widget *ui;是指向可视化设计界面的指针,通过它可以访问界面上的所有组件。
  • 包含了QWidge头文件,Widget类继承自QWidget

main.cpp

  • 新建 Qt 工程后自动生成的代码结构:
    • 包含头文件widget.hQApplication(应用程序类头文件)。
    • 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

cpp 复制代码
#ifndef MYLABEL_H
#define MYLABEL_H
#include<QLabel>
#include<QWidget>
class mylabel : public QLabel
{
public:
    mylabel(QWidget*parent);

    ~mylabel();
};

#endif // MYLABEL_H

mylabel.cpp

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 的终端等)。

相关推荐
王嘉俊9252 小时前
Qt 入门:构建跨平台 GUI 应用的强大框架
c语言·开发语言·c++·qt·入门·cpp
小白学大数据2 小时前
Python爬虫技术:招标信息抓取与关键词过滤 (1)
开发语言·爬虫·python
Irene19913 小时前
URLSearchParams :处理 URL 查询参数的接口
开发语言·前端·javascript
Dontla3 小时前
Web典型路由结构之Next.js (App Router, v13+) )(文件系统驱动的路由:File-based Routing)声明式路由:文件即路由
开发语言·前端·javascript
~无忧花开~3 小时前
JavaScript学习笔记(十七):ES6生成器函数详解
开发语言·前端·javascript·笔记·学习·es6·js
电商API_180079052473 小时前
获取淘宝商品视频API接口解析:通过商品链接url获取商品视频item_video
开发语言·爬虫·python·数据挖掘·数据分析
Pocker_Spades_A3 小时前
Python快速入门专业版(五十):Python异常处理:try-except语句(捕获单一与多个异常)
开发语言·python
hsjkdhs4 小时前
C++之友元函数与前向引用
开发语言·c++
ajassi20004 小时前
开源 C# 快速开发(十二)进程监控
开发语言·开源·c#