Qt QString的使用

Qt QString的使用


1. QString的arg()函数

  • 函数介绍:
QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar &fillChar = QLatin1Char(" ") ) const;
QString & QString::setNum(float n, char format = 'g', int precision = 6)
  • 示例代码
QString str;  
str = QString("Decimal 2 is %1 in hexadecimal").arg(0x02, 3, 16);//不带填充 
str = QString("%1").arg(521,5,10,QChar('a')); //带填充
float bb = 1235.664252;
str= QString("%1").arg(bb, 0, 'f', 1);

上述函数执行效果:
Decimal 2 is 002 in hexadecimal aa521 1235.7

  • 使用范例(结合QFile的使用):
    只保留关键代码
///数据结构
struct channel{
    int id;
    QVector<float> value;
};
typedef struct channel Channel;
///模拟数据
QList<Channel *> channelList;                         
channelList.clear();                                  
for(int i = 0; i < 12; i++)                           
{                                                     
    Channel *c = new Channel;                         
    c->id = i+1;                                      
    c->value.clear();                                 
    channelList.push_back(c);                         
    if(i == 3)                                        
    {                                                 
        continue;                                     
    }                                                 
    qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
    for(int j = 0; j < 200; j++)                      
    {                                                 
        c->value.push_back((float)(qrand() % 10000)); 
    }                                                 
}                                                     
///写文件
QFile raw_data("test.dat");
if(raw_data.open(QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate))
{
    QString line_data = "";
    for(int i = 0; i < 12; i++)
    {
        QString name = "";
        name.append(QString("CH%1").arg(i + 1, 2, 10, QChar('0')));
        line_data.append(QString("%1").arg(name, 10, QChar(' ')));
    }
    line_data.append("\r");
    raw_data.write(line_data.toStdString().data(), line_data.size());
    for(int i = 0; i < 200; i++)
    {
        line_data.clear();
        for(int j = 0; j < channelList.size(); j++)
        {
            if(channelList.at(j)->value.size() < (i + 1))
            {
                line_data.append(QString("%1").arg("NULL", 10));
            }else{
                line_data.append(QString("%1").arg(QString::number(channelList.at(j)->value.at(i)), 10, QChar(' ')));
            }
        }
        line_data.append("\n");
        raw_data.write(line_data.toStdString().data(), line_data.size());
    }
    raw_data.close();
}

上输代码运行的效果如下所示:

  CH01      CH02      CH03      CH04      CH05      CH06      CH07      CH08      CH09      CH10      CH11      CH12
  7699      7699      7699      NULL      7699      7699      7699      7699      7699      7699      7699      7699
  3265      3265      3265      NULL      3265      3265      3265      3265      3265      3265      3265      3265
   884       884       884      NULL       884       884       884       884       884       884       884       884
  8231      8231      8231      NULL      8231      8231      8231      8231      8231      8231      8231      8231
  9288      9288      9288      NULL      9288      9288      9288      9288      9288      9288      9288      9288
  8683      8683      8683      NULL      8683      8683      8683      8683      8683      8683      8683      8683
  8527      8527      8527      NULL      8527      8527      8527      8527      8527      8527      8527      8527
  1964      1964      1964      NULL      1964      1964      1964      1964      1964      1964      1964      1964

2.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,352评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,958评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,248评论 0 6
  • 问题描述 今天写脚本处理脚本文件的变量,需要将其中的一个变量(这里举例为replaceStr)替换成另一个变量。于...
    Fengya阅读 9,813评论 0 52
  • 在iOS开发中单例用的非常普遍,比如说通知中心,NSUserDefauld等都都是单例模式,原来以为创建一个单例是...
    HarriesChen阅读 3,604评论 3 9