QT的QStringList的使用

初始 化

默认构造函数创建一个空列表。可以使用初始值设定项列表构造函数创建包含元素的列表:

cpp 复制代码
QStringList fonts = { "Arial", "Helvetica", "Times" };

添加字符串

可以使用insert 、append() 和 operator<< 函数将字符串添加到列表中。

() 可用于方便地将多个元素添加到列表中:

cpp 复制代码
fonts << "Courier" << "Verdana";

遍历字符串

要遍历列表,可以使用索引位置迭代器类型:

索引:

cpp 复制代码
for (int i = 0; i < fonts.size(); ++i)
         cout << fonts.at(i).toLocal8Bit().constData() << Qt::endl;

操作字符串

QStringList提供了几个函数,允许您操作列表的内容。您可以使用 join() 函数将字符串列表中的所有字符串连接成单个字符串(带有可选的分隔符)。例如:

cpp 复制代码
QString str = fonts.join(", ");
     // str == "Arial, Helvetica, Times, Courier"

要连接的参数可以是单个字符或字符串。

要将字符串分解为字符串列表,请使用 split() 函数:

cpp 复制代码
QStringList list;
    list = str.split(',');
     // list: ["Arial", "Helvetica", "Times", "Courier"]/span>

要拆分的参数可以是单个字符、字符串、a 或 a QRegularExpression or a (deprecated) QRegExp

list还提供了filter函数,它允许您提取一个新列表,该列表仅包含那些包含特定子字符串(或匹配特定正则表达式)的字符串:

cpp 复制代码
QStringList monospacedFonts = fonts.filter(QRegularExpression("Courier|Fixed"));

contains() 函数告诉您列表是否包含给定字符串,而 indexof() 函数返回给定字符串第一次出现的索引。另一方面,lastindexof() 函数返回字符串最后一次出现的索引。

最后,replaceinstrings() 函数依次调用字符串列表中的每个字符串上的 replace()。例如:

cpp 复制代码
QStringList files;
    files << "$QTDIR/src/moc/moc.y"
          << "$QTDIR/src/moc/moc.l"
          << "$QTDIR/include/qconfig.h";

    files.replaceInStrings("$QTDIR", "/usr/lib/qt");
    // files: [ "/usr/lib/qt/src/moc/moc.y", ...]

使用QT的listview容器控件来显示QStringlist

cpp 复制代码
 //使用数据列表创建数据显示模型
    QStringListModel *listmodel = new QStringListModel(src);
    ui->listView->setModel(listmodel);                   //设置模型到listview上
    ui->listView->setMovement(QListView::Free);          //设置数据可以自由拖动
    ui->listView->setSpacing(2);                         //设置数据的间距
    ui->listView->show();
    connect(ui->listView, SIGNAL(clicked(const QModelIndex)),this, SLOT(slotClicked(const QModelIndex)));

其中connect可以在双击以后,会触发slot槽函数。

这样可以实现listview显示出的接口控件是任意数量的。

像我自己喜欢获取的是listview里面,用户双击以后获得名称,具体代码实现如下:

cpp 复制代码
void MainWindow::slotClicked(const QModelIndex &index)
{
    goal=index.data().toString();
    QStringList acquire=goal.split("-");
}

通过这个QModelIndex来传递变量名称,来实现传递。

另外,void QStringList::sort(Qt:CaseSensitivity cs=Qt:CaseSensitive)

按升序对字符串列表进行排序。如果cs Qt::CaseSensitive(默认值),则字符串比较区分大小写;换句话说comparison不区分大小写排序使用STL的std:sort()算法执行,该算法对线性对数时间进行平均,即O(n log n)如果想按任意顺序对字符串进行排序,请考虑使用QMap类。例如,您可以使用QMap<QString,QString>创建不区分大小写的排序(例如,键是字符串的小写版本,值是字符串),或者QMap<int,QString>按某个整数索引对字符串进行排序。

相关推荐
安当加密6 分钟前
SQL Server 数据库安全新范式:TDE 透明加密+ DBG数据库安全网关 双重装甲
数据库·oracle
im_AMBER8 分钟前
Leetcode 160 最小覆盖子串 | 串联所有单词的子串
开发语言·javascript·数据结构·算法·leetcode
Rabitebla10 分钟前
【数据结构】动态顺序表实现详解:从原理到接口设计(面试视角)
c语言·开发语言·数据结构·c++·面试·职场和发展
郝学胜-神的一滴19 分钟前
Linux 高并发基石:epoll 核心原理 + LT/ET 触发模式深度剖析
linux·运维·服务器·开发语言·c++·网络协议
java干货21 分钟前
如果光缆被挖断导致 Redis 出现两个 Master,怎么防止数据丢失?
数据库·redis·缓存
A_aspectJ27 分钟前
Java开发的学习优势:稳定基石与多元可能并存的技术赛道
java·开发语言
qq_2837200529 分钟前
Python 模块精讲:collections —— 高级数据结构深度解析(defaultdict、Counter、deque)
java·开发语言
2401_8371638937 分钟前
CSS如何实现网页打印样式优化_利用@media print重写布局
jvm·数据库·python
Irene199138 分钟前
Oracle 21c XE 安装后默认不包含HR等示例表,CO 模式、SCOTT 模式安装过程记录
数据库·oracle
wjs202440 分钟前
Chart.js 饼图指南
开发语言