Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
QT自带的例子Codecs是一篇关于保存和载入不同编码文本的例子
其界面比较简单一个简单的单文档而已
有2个主要的对象
一个是MainWindow用于窗体主界面
另外一个是PreviewForm用于显示编码格式列表
1.其编码格式的获取部分代码如下:
    QMap<QString, QTextCodec *> codecMap;
    QRegExp iso8859RegExp(
"ISO[- ]8859-([0-9]+).*");

    
foreach (int mib, QTextCodec::availableMibs()) {
        QTextCodec 
*codec = QTextCodec::codecForMib(mib);

        QString sortKey 
= codec->name().toUpper();
        
int rank;

        
if (sortKey.startsWith("UTF-8")) {
            rank 
= 1;
        } 
else if (sortKey.startsWith("UTF-16")) {
            rank 
= 2;
        } 
else if (iso8859RegExp.exactMatch(sortKey)) {
            
if (iso8859RegExp.cap(1).size() == 1)
                rank 
= 3;
            
else
                rank 
= 4;
        } 
else {
            rank 
= 5;
        }
        sortKey.prepend(QChar(
'0' + rank));

        codecMap.insert(sortKey, codec);
    }
    codecs 
= codecMap.values();
通过使用foreach循环来获取支持的编码格式并保存
不过看上去foreach (int mib, QTextCodec::availableMibs())有点奇怪
查查资料
解释是foreach(variables ,container)关键字是Qt对c++的一个扩展,主要用于按顺序历经容器(container)中的对象
2关于文件菜单的生成和设置
菜单的构造
一个例子
saveAsMenu = new QMenu(tr("&Save As"), this);这里有2个参数一个是菜单显示文另外一个是当前窗体指针
然后就可以加载子菜单,设置分隔符,设置事件响应等操作了
例子为:
    fileMenu = new QMenu(tr("&File"), this);
    fileMenu
->addAction(openAct);
    fileMenu
->addMenu(saveAsMenu);
    fileMenu
->addSeparator();
    fileMenu
->addAction(exitAct);
那如何绑定菜单到当前窗体呢
如下:
menuBar()->addMenu(fileMenu);
menuBar()
->addSeparator();
menuBar()
->addMenu(helpMenu);
menuBar()是QmainWindow的成员函数用于获取窗体菜单项指针
3.QT对象QAction
QT文档对QAction的解释是可以抽象用户接口对象-可以插入控件
例子如下:
    openAct = new QAction(tr("&Open"), this);
    openAct
->setShortcuts(QKeySequence::Open);
    connect(openAct, SIGNAL(triggered()), 
this, SLOT(open()));
无非就是对象声明,设置快捷键,链接函数和响应而已
4.窗体设置
    setWindowTitle(tr("Codecs"));
    resize(500, 400);

5.消息对话框
QMessageBox::about(this, tr("About Codecs"),
tr("The <b>Codecs</b> example demonstrates how to read and write "
"files using various encodings."));



posted on 2011-03-15 09:53 ccsdu2009 阅读(911) 评论(0)  编辑 收藏 引用 所属分类: QT编程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理