0

我有以下 main.cpp文件,

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QTextCodec::setCodecForCString(QTextCodec::codecForName("UTF-8"));

    MainWindow w;
    w.show();

    return a.exec();
}

以下是mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);    

    result = new QLabel("Check Result Here:",this);

    result->setGeometry(QRect(QPoint(180,30),QSize(161,161)));

    QString m("宁愿看见两个恶魔在拔河,也不愿看见一只天使在跳舞。");

    result->setText(m);

}

MainWindow::~MainWindow()
{
    delete ui;
}

上的汉字QLabel不能正常显示。

如果我将它们修改为以下,字符可以正常显示。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.show();

    return a.exec();
}

以下是mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);    
    QTextCodec::setCodecForCString(QTextCodec::codecForName("UTF-8"));

    result = new QLabel("Check Result Here:",this);

    result->setGeometry(QRect(QPoint(180,30),QSize(161,161)));

    QString m("宁愿看见两个恶魔在拔河,也不愿看见一只天使在跳舞。");

    result->setText(m);

}

MainWindow::~MainWindow()
{
    delete ui;
}

我认为这是函数“setCodeForCString()”范围的问题,有人可以解释一下吗?

4

0 回答 0