도와주세요!!
안녕하세요
리눅스에서 qte를 이용해서 작업중에 디버깅과 통합환경이 불편해서 비주얼스트디오에 qt를 설치해서 사용하고있는데요
리눅스에서는 qte의 라이브러리 디렉토리의 폰트 디렉토리에 제가원하는 글꼴을 넣어주어서 한글이 출력되게끔 했었습니다
그런데 문제는 윈도우에 개발환경을 구축하면서 한글이 깨져서 들어오게되었습니다
리눅스때는 해결을 했었는데 비주얼스트디오에서는 2주정도 삽질을 했는데도 해결을 못하고있네요
qt설치시 들어있는 example중에서 textedit로 사용해서 화일을 읽어들이면 잘읽어들이는데 제가 작성한곳에서는 한글이 안찍혀지고있네요
이것저것 해보느라 소스가 지져분하네요 고수분들의 아낌없는 지적부탁드릴께요
//file.h
#ifndef _FILE_H
#define _FILE_H
#include <qwidget.h>
#include <qmultilineedit.h>
#include <qfile.h>
#include <qstring.h>
#include <qtextcodec.h>
#include <qeuckrcodec.h>
#include <qfont.h>
#define kor(str) QString::fromLocal8Bit(str);
#define korDocumentRead(string) QString::fromUtf8(string);
class MyWidget : public QWidget
{
public:
MyWidget();
private:
QMultiLineEdit* edit1;
};
#endif //_FILE_H
//file.cpp
#include "file.h"
MyWidget::MyWidget()
{
resize(800, 480);
QString str;
QFont font("gulim", 10, QFont::Black);
QFontMetrics fm(font,QFont::Hangul);
font.setItalic(false);
edit1 = new QMultiLineEdit(this);
edit1->setGeometry(0,0,500, 450);
edit1->setFont(font);
QFile file("sample.xml");
file.open(IO_ReadOnly);
QTextStream ts(&file);
int i=0;
int count = 0;
QString cover = "<cover>";
QString endcover ="</cover>";
QString front = "<front>";
QString endfront ="</front>";
QString body = "<body>";
QString endbody ="</body>";
QString back = "<back>";
QString endback ="</back>";
while(ts.atEnd() ==0)
{
str = ts.readLine();
korDocumentRead(str);
// kor(str);
QString tag="";
QString text="";
int length = str.length();
QChar comp ='<';
QChar end = '>';
int i=0;
while(i<length){
if(comp == str[i]){
while(str[i] != end && i<length){
tag = tag+str[i];
i++;
}
tag =tag+str[i];
edit1->insertLine(tag);
if(tag == cover){
QString answer ="cover.....................................";
edit1->insertLine(answer);
}
else if(tag == endcover){
QString answer = "endcover...................................";
edit1->insertLine(answer);
}
else if(tag == front){
QString answer ="front.......................................";
edit1->insertLine(answer);
}
else if(tag == endfront){
QString answer ="endfront.........................................";
edit1->insertLine(answer);
}
else if(tag == body){
QString answer ="body...............................................";
edit1->insertLine(answer);
}
else if(tag == endbody){
QString answer ="endbody..............................................";
edit1->insertLine(answer);
}
else if(tag == back){
QString answer ="back.....................................................";
edit1->insertLine(answer);
}
else if(tag == endback){
QString answer ="endback...................................................";
edit1->insertLine(answer);
}
else {
}
}
else{
text = text+str[i];
}
i++;
}
edit1->insertLine(text);
}
}
//main.cpp
#include <qapplication.h>
#include "file.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MyWidget mw;
QString str;
str = kor("샘터");
mw.setCaption(str);
app.setMainWidget(&mw);
mw.show();
return app.exec();
}