精华内容
下载资源
问答
  • QT实验分析教程 Qt中的字符串类,QString(9)       Qt中的字符串类 采用Unicode编码。   QString直接支持字符串和数字的相互转换 QString直接支持字符串的大小比较 QString直接支持不同字符编码间的...

    QT实验分析教程 Qt中的字符串类,QString(9)

     

     

     

    Qt中的字符串类

    采用Unicode编码。

     

    QString直接支持字符串和数字的相互转换

    QString直接支持字符串的大小比较

    QString直接支持不同字符编码间的相互转换

    QString直接支持std::string和std::wstring的相互转换

    QString直接支持正则表达式的应用

     

     

    QString的函数

    String & QString::append ( const QString & str )

    将字符串str追加到此字符串的末尾。

    QString & QString::prepend ( const QString & str )

    将字符串str前置到此字符串的开头,并返回对此字符串的引用。

    QString & QString::replace ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )

    将前面的每个字符串替换为后面的字符串,并返回对此字符串的引用。

    QString & QString::sprintf ( const char * cformat, ... )

    从格式字符串cformat和任意参数列表安全地构建格式化字符串。

    int QString::indexOf ( const QLatin1String & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const

    返回字符串str在该字符串中第一次出现的索引位置,从中向前搜索。如果找不到str,则返回-1。

    QString QString::mid ( int position, int n = -1 ) const

    返回一个子字符串,该字符串包含n个字符,从指定的位置索引开始。

    QString QString::trimmed () const

    返回从开头和结尾删除空白的字符串。

    int QString::length () const

    返回此字符串中的字符数。相当于size()。

    QString & QString::remove ( int position, int n )

    从给定位置索引开始,从字符串中删除n个字符,并返回对该字符串的引用。

     

     

     

    QLineEdit

    void setText ( const QString & )

    设置字符串

    QString text () const

    得到字符串

    void setAlignment ( Qt::Alignment flag )

    此属性保留行编辑的对齐方式

     

     

     

    QObject

    QObject * QObject::sender () const [protected]

    如果在由信号激活的槽中调用,则返回指向发送信号的对象的指针;否则返回0。指针仅在执行从该对象的线程上下文调用该函数的槽期间有效。

     

    示例程序:

    #include <QtCore/QCoreApplication>
    #include <QDebug>
    
    void Sample_1()
    {
        //字符串变量s
        QString s = "add";
    
        //追加append
        s.append(" ");      //"add "
        s.append("Qt");     //"add Qt"
        //前面插入prepend
        s.prepend(" ");     //" add Qt"
        s.prepend("C++");   //"C++ add Qt"
    
        qDebug() << s;
    
        //替换replace,将字符串s的add替换为&
        s.replace("add", "&");  //“C++ & Qt”
    
        qDebug() << s;
    }
    
    void Sample_2()
    {
        QString s = "";
        int index = 0;
    
        //格式化
        s.sprintf("%d. I'm %s, thank you!", 1, "Delphi Tang");// 1. I'm Delphi Tang, thank you!
    
        qDebug() << s;
    
        //,的下标是多少
        index = s.indexOf(",");
    
        //取子串
        s = s.mid(0, index);//"1. I'm Delphi Tang"
    
        qDebug() << s;
    
        //.的位置
        index = s.indexOf(".");
    
        //提取子串
        s = s.mid(index + 1, s.length());   //" I'm Delphi Tang"
        //将字符串前后空格去掉
        s = s.trimmed();    //"I'm Delphi Tang"
    
        qDebug() << s;
    
        index = s.indexOf(" ");
    
        s = s.mid(index + 1, s.length());   //"Delphi Tang"
        s = s.trimmed();
    
        qDebug() << s;
    }
    
    void Sample_3(QString* a, int len)
    {
        //选择排序
        for(int i = 0; i < len; i++)
        {
            for(int j = i + 1; j < len; j++)
            {
                if (a[j] < a[i])
                {
                    QString tmp = a[i];
                    a[i] = a[j];
                    a[j] = tmp;
                }
            }
        }
    }
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        
        qDebug() << "Sample_1:";
    
        Sample_1();
    
        qDebug() << endl;
        qDebug() << "Sample_2:";
    
        Sample_2();
    
        qDebug() << endl;
        qDebug() << "Sample_3:";
    
        QString company[5] =
        {
            QString("Oracle"),
            QString("Borland"),
            QString("Microsoft"),
            QString("IBM"),
            QString("D.T.Software"),
        };
    
        Sample_3(company, 5);
    
        for(int i = 0; i < 5; i++)
        {
            qDebug() << company[i];
        }
    
        return a.exec();
    }
    

    结果如下:

     

     

     

    为计算器示例添加消息响应

    关键代码:

    //按键消息处理函数
    void QCalculatorUI::onButtonClicked()
    {
        //得到被点击的按钮指针
        QPushButton* btn = (QPushButton*)sender();
        QString clickText = btn->text();
    
        //回退
        if(clickText == "<-")
        {
            QString text = m_edit->text();
    
            if(text.length() > 0)
            {
                //删除
                text.remove(text.length()-1, 1);
    
                m_edit->setText(text);
            }
        }
        //清空
        else if(clickText == "C")
        {
            m_edit->setText("");
        }
        else if(clickText == "=")
        {
    
        }
        else
        {
            m_edit->setText(m_edit->text() + clickText);
        }
    }

    完整代码:

    QCalculatorUI.h

    #ifndef _QCALCULATORUI_H_
    #define _QCALCULATORUI_H_
    
    #include <QWidget>
    #include <QLineEdit>
    #include <QPushButton>
    
    class QCalculatorUI : public QWidget
    {
        Q_OBJECT
    private:
        QLineEdit* m_edit;
        QPushButton* m_buttons[20];
    
        QCalculatorUI();
        bool construct();
    private slots:
        void onButtonClicked();
    public:
        static QCalculatorUI* NewInstance();
        void show();
        ~QCalculatorUI();
    };
    
    #endif
    

    QCalculatorUI.cpp

    #include "QCalculatorUI.h"
    #include <QDebug>
    
    QCalculatorUI::QCalculatorUI() : QWidget(NULL, Qt::WindowCloseButtonHint)
    {
    
    }
    
    bool QCalculatorUI::construct()
    {
        bool ret = true;
        const char* btnText[20] =
        {
            "7", "8", "9", "+", "(",
            "4", "5", "6", "-", ")",
            "1", "2", "3", "*", "<-",
            "0", ".", "=", "/", "C",
        };
    
        m_edit = new QLineEdit(this);
    
        if (m_edit != NULL)
        {
            m_edit->move(10, 10);
            m_edit->resize(240, 30);
            m_edit->setReadOnly(true);//文本框只能读,不能写
            m_edit->setAlignment(Qt::AlignRight);
        }
        else
        {
            ret = false;
        }
    
        for(int i = 0; (i < 4) && ret; i++)
        {
            for(int j = 0; (j < 5) && ret; j++)
            {
                m_buttons[i * 5 + j] = new QPushButton(this);
    
                if(m_buttons[i * 5 + j] != NULL)
                {
                    m_buttons[i * 5 + j]->resize(40, 40);
                    m_buttons[i * 5 + j]->move(10 + (10 + 40) * j, 50 + (10 + 40) * i);
                    m_buttons[i * 5 + j]->setText(btnText[i * 5 + j]);
    
                    connect(m_buttons[i * 5 + j], SIGNAL(clicked()), this, SLOT(onButtonClicked()));
                }
                else
                {
                    ret = false;
                }
    
            }
        }
    
        return ret;
    }
    
    QCalculatorUI* QCalculatorUI::NewInstance()
    {
        QCalculatorUI* ret = new QCalculatorUI();
    
        //如果资源申请失败
        if ((ret == NULL) || !ret->construct())
        {
            delete ret;
            ret = NULL;
        }
    
        return ret;
    }
    
    void QCalculatorUI::show()
    {
        QWidget::show();
        setFixedSize(width(), height());//固定大小
    }
    
    //按键消息处理函数
    void QCalculatorUI::onButtonClicked()
    {
        //得到被点击的按钮指针
        QPushButton* btn = (QPushButton*)sender();
        QString clickText = btn->text();
    
        //回退
        if(clickText == "<-")
        {
            QString text = m_edit->text();
    
            if(text.length() > 0)
            {
                //删除
                text.remove(text.length()-1, 1);
    
                m_edit->setText(text);
            }
        }
        //清空
        else if(clickText == "C")
        {
            m_edit->setText("");
        }
        else if(clickText == "=")
        {
    
        }
        else
        {
            m_edit->setText(m_edit->text() + clickText);
        }
    }
    
    QCalculatorUI::~QCalculatorUI()
    {
    
    }
    

    main.cpp

    #include <QtGui/QApplication>
    #include "QCalculatorUI.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QCalculatorUI* cal = QCalculatorUI::NewInstance();
        int ret = -1;
    
        if (cal != NULL)
        {
            cal->show();
    
            ret = a.exec();
    
            delete cal;
        }
    
    
    
        return ret;
    }
    

    结果如下:

    展开全文
  • 第一章 需求分析1.1 设计目的及要求1.1.1 设计目的运用面向对象程序设计知识,利用C++语言设计和实现一个字符串处理系统。1.1.2 设计要求要求具备如下主要功能:字符串的输入与输出求字符串的长度判断字符串是否为空...
        

    第一章 需求分析

    1.1 设计目的及要求

    1.1.1 设计目的

    运用面向对象程序设计知识,利用C++语言设计和实现一个字符串处理系统。

    1.1.2 设计要求

    要求具备如下主要功能

    字符串的输入与输出

    求字符串的长度

    判断字符串是否为空

    将字符串置空

    字符串比较

    字符串赋值

    求指定位置的字符

    字符串合并

    字符串截取

    在指定的字符串中1,查找或替换字符串2

    点击下载源码

    17010799-5f606df74703d9bd.png
    展开全文
  • 第一章 需求分析1.1 ...字符串的输入与输出求字符串的长度判断字符串是否为空将字符串置空字符串比较字符串赋值求指定位置的字符字符串合并字符串截取在指定的字符串中1,查找或替换字符串21.2 设计需求分析 ...
        

    第一章 需求分析

    1.1 设计目的及要求

    1.1.1 设计目的

    运用面向对象程序设计知识,利用C++语言设计和实现一个字符串处理系统。

    1.1.2 设计要求

    要求具备如下主要功能

    字符串的输入与输出

    求字符串的长度

    判断字符串是否为空

    将字符串置空

    字符串比较

    字符串赋值

    求指定位置的字符

    字符串合并

    字符串截取

    在指定的字符串中1,查找或替换字符串2

    1.2 设计需求分析

    18423381-9f337746ae855ff7.png

    源码下载地址:https://www.write-bug.com/article/1437.html

    展开全文
  • 花了一个下午的时间逐个下断点分析测试整理出来的, 觉得好用点个赞哦~, 若发现有错误请在评论区指正

    在这里插入图片描述
    花了一个下午的时间逐个下断点分析测试整理出来的, 觉得好用点个赞哦~, 若发现有错误请在评论区指正

    展开全文
  • 5.0版本后的Qt提供了connect函数的两种写法:基于字符串的connect(string-based)和基于函数子(functor-based)的connect。由于这两种写法在原理上的差异,他们都有十分明显的优缺点,主要表现在类型检查(type-check...
  • 注:整个对Qt的拆解和分析都是基于Qt 5.80.开始啃帮助文档。以下总结不会对帮助文档全篇内容翻译,会在自己翻译的基础上加上自己的理解,进行一个简单的总结,以便在使用时忘记的时候复习查看。 ...
  • 分析网络数据或者通信数据的时候,经常需要从一大串字符串中去获取个别键值对的数据,简单的方法就是一个一个字符遍历并且判断关键字符,逻辑往往非常复杂,现在分享一种通过正则表达式提取键值对数据的方法。...
  • 1.创建原始数据项目,项目下可以创建产品,产品自动创建四个阶段,阶段可以导入各自数据格式的原始文件;2.创建原始数据项目和产品的时候,参数配置文件、成功配置文件、成功数据也会创建对应的项目和产品;...
  • QString strTmp = "test";const char *pTmp = QString::...今天调试程序出现pTmp指向字符串为空,当时分析是临时变量销毁了std::string s = strTmp.toStdString(); const char* pTmp = s.c_str();...
  • gbk_utf_ansi_asc字符分析字节序 字符集 ●ASCII的7位字符集128个字符 ●标准ASCII中最高位(b7)用作奇偶校验1个数 ●IS0-8859-1 扩展ASCII 128-255拉丁 ANSI标准 ●AmericanNational Standards Institute...
  • 最近在些一个电影的小东西,就是从别人网站抓去网页,然后分析网页内容,提取自己感兴趣的东西,由于对方网站用的是GB2312编码,URL中提交中文老是报错,在网上找了很久也没找到可用的,于是参照一些例子,自己写了一个,写的...
  • QT QObject分析

    2019-06-14 10:24:36
    看了上面大佬写的东西,自己也总结一下吧,元对象系统中实现了很多功能,有信号槽机制,将信号,槽,qt 的一些宏转化为 moc_*.h文件,而且其中的信号和槽连接,是通过字符串连接的,然后通过存储的数据,在函数中...
  • 先把接收到的字节数据转换成二进制的字符串,从二进制字符串的提取每个信号的起始位和位长度,再转成数值。 void DbcMessageBase::getValue(const unsigned char *data, int len) { QString bits; for(int i=0;...
  • 首先说明几个基础概念 UTF-8 BOM和UTF-8。...代表将字符串以对应格式去解析成执行字符集,qt程序运行的时候字符串编码在QString中实际都是以unicode编码存储的。fromLocal8Bit()代表从本地字符集(系统设..
  • LR(1)语法分析器-QT,C++

    2020-04-13 20:56:44
    基于QT,C++实现的LR(1)语法分析器。输入终结符、非终结符和项目集可以得到语法分析表,然后可以对字符串分析。界面随便写了写,没写分辨率适应屏幕。打开可能怪怪的,去UI调调就好。
  • Qt 汉字乱码的分析

    2014-01-21 08:56:10
    首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。 很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的...
  • 最近做的一个小项目,涉及到Qt调用VS生成的C++命令行程序,要求满足对任意字符的编码,都能在命令行程序里面,完成读写文本文件和正确显示的要求,例如字符串“中文English☯☰☷♥♠”。由于对C++操作和编码概念的...
  • Linux窗口程序设计:Qt4精彩实例分析 基本信息 ·出版社:清华大学出版社 ·页码:316 页 ·出版日期:2008年11月 ·ISBN:7302181586/9787302181583 ·条形码:9787302181583 ...实例63 字符串编码格式转换313

空空如也

空空如也

1 2 3 4 5 6
收藏数 110
精华内容 44
关键字:

qt字符串分析