• 5514阅读
  • 3回复

关于拖放问题 [复制链接]

上一主题 下一主题
离线fzy112001
 
只看楼主 倒序阅读 楼主  发表于: 2007-08-01
— 本帖被 XChinux 执行加亮操作(2008-07-18) —
我是初学者,我做了一个程序,当把文本类文件拖放到程序窗口时,用QTextEdit显示其内容。遇到了一个问题,当我拖放一个文件的路径是全英文时就可以显示内容。当路径中有汉字时则无法显示其内容。估计是路径的编码问题,哪位大侠给解答一下。另外怎样在终端窗口输出QString!
离线XChinux

只看该作者 1楼 发表于: 2007-08-01
在终端显示字符串
在.pro文件中加
CONFIG += console
文件路径问题,自然是要进行编码转换的,你拖的路径是GBK的,要把它转换为UTF-8
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线fzy112001
只看该作者 2楼 发表于: 2007-08-01
一楼的兄弟,我按你的方法试了,依然不成功。为了显示结果,我把dropEvent给改写了,现在不读原文件了,只在QTextEdit里显示文件的路径,并保存到一个文本文件中。代码如下:
============================================================
void MainWindow::dropEvent(QDropEvent *event)
{
    QStringList fileNames;
    if(QUriDrag::decodeLocalFiles(event,fileNames))
    {
        textEdit->setText(fileNames[0]);
        QFile file("a.txt");
        if(file.open(IO_ReadWrite))
        {
            QTextStream stream(&file);
            stream<<textEdit->text();
            textEdit->setModified(FALSE);
        }
    }
}
===============================================
转编码的部分我去掉了,因为没有效果,我是用QTextCodec类来转的编码。另外,我的系统是RH9,再帮帮忙指点一下。
离线XChinux

只看该作者 3楼 发表于: 2007-08-01
下面是一段我以前的一个程序中读GBK内码的文件里的内容的一段代码,程序中使用的内码是UTF-8的,楼主看看有没有帮助。   
==================================================
      QFile file(csvFilename);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        return;
    }
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    QString strLine;
    int iLine = 0;
    int iSucc = 0;
    QStringList slLine;
    while (!file.atEnd())
    {
        strLine = codec->toUnicode(file.readLine());
        if (iLine == 0 || strLine.size() < 16)
        {
            iLine++;
            continue;
        }
        slLine << strLine;
    }
    file.close();
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个