首页 > 解决方案 > Qt5 标签更改文本显示损坏

问题描述

应用程序在 Qt Creator 中运行良好,但在 Visual Studio 中运行良好。

我尝试在 Visual Studio 中学习 C++ Qt5 GUI 应用程序。这是基本应用程序:

单击按钮并更改标签文本。

主文件

#include "Deneme.h"
#include "stdafx.h"
#include <QtWidgets/QApplication>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-9"));
    Deneme w;
    w.show();
    return a.exec();
}

头文件:

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_Deneme.h"

class Deneme : public QMainWindow
{
    Q_OBJECT

public:
    Deneme(QWidget *parent = Q_NULLPTR);

private:
    Ui::DenemeClass ui;

private slots:
    void changeText();
};

cpp文件:

#include "Deneme.h"
#include "stdafx.h"

Deneme::Deneme(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(changeText()));
}

void Deneme::changeText() {
    ui.label->setText("Metin Değiştirildi!");
}

标签文本在开始时很好。单击按钮后,出现编解码器问题。

初始标签文本 点击按钮后

我试过 QTextCodec 但没有用:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("ISO 8859-9"));

使用:

标签: c++qtqt5visual-studio-2019

解决方案


QTextCodec::setCodecForLocale( QTextCodec::codecForName( "UTF-8" ) );
ui.label->setText(QStringLiteral("Metin Değiştirildi!"));

推荐阅读