小编Aki*_*iva的帖子

在Qt中创建/写入新文件

我正在尝试写入文件,如果该文件不存在则创建它.我在互联网上搜索过,没有什么对我有用.

我的代码看起来像这样:

QString filename="Data.txt";
QFile file( filename );
if ( file.open(QIODevice::ReadWrite) )
{
    QTextStream stream( &file );
    stream << "something" << endl;
}
Run Code Online (Sandbox Code Playgroud)

如果我在目录中创建一个名为Data的文本文件,它将保持为空.如果我不创建任何东西,它也不会创建文件.我不知道该怎么做,这不是我尝试创建/写入文件的第一种方式,而且没有一种方法可行.

谢谢你的回答.

c++ qt

46
推荐指数
3
解决办法
16万
查看次数

Python - 使用请求直接下载文件到内存

目标是从互联网上下载文件,并从中创建一个文件对象,或者像对象这样的文件,而不必触摸硬盘.这只是为了我的知识,想要知道它是否可行或实用,特别是因为我想看看我是否可以避免编写文件删除行.

这就是我通常从网上下载内容并将其映射到内存的方式:

import requests
import mmap

u = requests.get("http://www.pythonchallenge.com/pc/def/channel.zip")

with open("channel.zip", "wb") as f: # I want to eliminate this, as this writes to disk
    f.write(u.content)

with open("channel.zip", "r+b") as f: # and his as well, because it reads from disk
    mm = mmap.mmap(f.fileno(), 0)
    mm.seek(0)
    print mm.readline()
    mm.close() # question: if I do not include this, does this become a memory leak?
Run Code Online (Sandbox Code Playgroud)

python mmap python-requests

13
推荐指数
3
解决办法
2万
查看次数

在 Qt 中;将 QString 中每个单词的第一个字母大写的最佳方法是什么?

我正在考虑正则表达式,但这并不完全可读。还有一些功能s.toUpper()需要考虑,可能还有其他事情。

那么将 QString 中单词的首字母大写的最佳方法是什么?

c++ regex string qstring qt

7
推荐指数
1
解决办法
6333
查看次数

如何将QString乘以它自身重复n次?

我需要我的字符串重复n次,如下所示:

QString s("Dog");
qDebug() << s * 3;
"DogDogDog"
Run Code Online (Sandbox Code Playgroud)

我知道您可以使用single做到这一点char,但是我不知道如何使用字符串来做到这一点,而无需借助创建如下的for循环:

https://paste.fedoraproject.org/300131/94336814/

有捷径吗?

qstring qt

5
推荐指数
1
解决办法
1579
查看次数

如何构建所有 LLVM?

我最近在我的系统中构建并安装了 llvm,期望这将是构建 qtcreator 所必需的: https: //paste.ubuntu.com/p/23GCCS5xxS/

\n

根据我在那里看到的内容,我将变量设置为:

\n
\xe2\x9e\x9c  qt6.2 git:(6.2) \xe2\x9c\x97 echo $LLVM_INSTALL_DIR\n\n/usr/local/lib/cmake/llvm/\n
Run Code Online (Sandbox Code Playgroud)\n

然而在配置Qt6.2时,它仍然给出

\n
WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation.\nEither set CMAKE_PREFIX_PATH or LLVM_INSTALL_DIR to the location of your llvm installation.\n
Run Code Online (Sandbox Code Playgroud)\n

据我了解,当我构建 llvm 时,我没有用它构建 Clang。基于https://clang.llvm.org/get_started.html它给出了以下行:

\n
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm\nmake\n#This builds both LLVM and Clang for debug mode.\n
Run Code Online (Sandbox Code Playgroud)\n

这很令人沮丧,因为我现在必须再次构建它,这需要很长时间。\n我只是喜欢从 llvm 构建和安装所有内容的命令,所以我不必继续回到这些事情。那可能吗?

\n

installation build cmake llvm clang

5
推荐指数
1
解决办法
7342
查看次数

是否有QPair课程,但有三个+项而不是两个?

QPair很好,但如果我需要3件物品怎么办?我应该制作一个结构,还是Qt让我被覆盖?

c++ qt struct

4
推荐指数
2
解决办法
5282
查看次数

在 Qt 中将 42010958 毫秒转换为小时:分钟:秒的最简洁方法是什么?

QTime类为我提供一些麻烦,因为它不允许我将毫秒设置为高于某些值,\xc2\xa0因此 \xc2\xa0 使这样的条目无效。:

\n\n
    QTime time;\n    time.setHMS(0,0,0,42010958); // I normally use a variable\n
Run Code Online (Sandbox Code Playgroud)\n\n

考虑到我正在处理的毫秒范围介于 about1000和之间1000000000,我不太热衷于编写大量整数转换代码来清理每个条目,但我会做我必须做的事情。

\n\n

42010958在 Qt 中将毫秒转换为最简洁的方法是什么Hours:Minutes:Seconds

\n

c++ time qt milliseconds qtime

4
推荐指数
1
解决办法
2190
查看次数

在 Qt 中:我可以输出到 `stdout`,就像我可以使用 qDebug() 输出到 `stderr` 一样简单吗?

到目前为止,我使用qDebug().noquote(). 这很容易,因为它只需要一个简单的#import <QDebug>

现在我需要将所有内容输出到stdout,但我不知道如何轻松完成。我是这样被教导的:

QTextStream cout(stdout, QIODevice::WriteOnly);
Run Code Online (Sandbox Code Playgroud)

然而,创建一个新对象比一个简单的#import <QDebug>. stdout在qt中处理的好/最不麻烦的方法是什么?

c++ qt stdout qdebug qtextstream

4
推荐指数
1
解决办法
4432
查看次数

QPointer::clear() 是否删除其引用的指针,或者是否“清除此 QPointer 对象”。是什么意思?

QPointer有一个方法,clear()

清除这个 QPointer 对象。

我不确定“清楚”究竟是什么意思。在我看来,这可能意味着

  1. 它会删除您引用的指针。

或者

  1. 它取消附加您引用的指针,将该指针留在堆上,并且该QPointer<T>对象不再绑定到任何指针。

或许还有别的意思?你能告诉我它实际上是做什么的吗?

c++ qt pointers heap-memory qpointer

4
推荐指数
1
解决办法
1702
查看次数

在Qt中,用最少量的代码替换正则表达式捕获的字符串匹配是什么?

我希望QString允许这样:

QString myString("School is LameCoolLame and LameRadLame");
myString.replace(QRegularExpression("Lame(.+?)Lame"),"\1");
Run Code Online (Sandbox Code Playgroud)

离开

"School is Cool and Rad"
Run Code Online (Sandbox Code Playgroud)

与我在文档中看到的不同,执行此操作需要您做更多的复杂(从文档中):

QRegularExpression re("\\d\\d \\w+");
QRegularExpressionMatch match = re.match("abc123 def");
if (match.hasMatch()) {
    QString matched = match.captured(0); // matched == "23 def"
    // ...
}
Run Code Online (Sandbox Code Playgroud)

或者在我的情况下这样的事情:

QString myString("School is LameCoolLame and LameRadLame");
QRegularExpression re("Lame(.+?)Lame");
QRegularExpressionMatch match = re.match(myString);
if (match.hasMatch()) {
    for (int i = 0; i < myString.count(re); i++) {
        QString newString(match.captured(i));
        myString.replace(myString.indexOf(re),re.pattern().size, match.captured(i));
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用(我实际上放弃了).必须有一种更方便的方式.为了简单起见和代码可读性,我想知道采用最少行代码完成此任务的方法.

谢谢.

regex qt qregularexpression

3
推荐指数
1
解决办法
1045
查看次数