我正在制作一个Qt应用程序,我有一个按钮来打开一个连接到自定义插槽的文件.这是到目前为止的插槽代码:
void MainWindow::file_dialog() {
const QFileDialog *fd;
const QString filename = fd->getOpenFileName();
}
Run Code Online (Sandbox Code Playgroud)
我怎么能拥有它然后将文件名转换为a const char *,打开文件,读取它并将文本存储在QString中,然后关闭文件.我正在使用Qt4.
我有这样的事情:
void ReadFileAndConvert ()
{
QFile File (Directory + "/here/we/go");
if(File.open(QIODevice::ReadOnly | QIODevice::Text))
{
QTextStream Stream (&File);
QString Text;
do
{
Text = Stream.readLine();
Text = Text.simplified();
// Here I want to convert the multiline QString Text into a oneline QString
// ...
}
Run Code Online (Sandbox Code Playgroud)
QString Text包含一个多行文本,我需要将其转换为在线Text/QString.我怎样才能做到这一点?问候
我尝试从QStringusing toFloat()方法中获取一个浮点数,但我得到0的每个数字都是我获取的.我认为数字格式是错误的,系统无法识别它,我怎样才能为这些数字设置正确的格式:119,68648?
你知道如何计算可能的参数QString吗?
我想做的事情如下:
int argumentCount = countArguments(QString("This is the %1 argument, this is the %2 one")`);
Run Code Online (Sandbox Code Playgroud)
结果应该在哪里argumentCount == 2.
对不起我令人毛骨悚然的英语。在 Qt 4.8.4 中,我尝试使用静态 QString 字段创建单例类。它不能是 const,因为这个字段会在运行时改变值。通过常量 QString 初始化此字段,在同一文件中声明。
不幸的是,这是行不通的,并且在初始化字符串中
LogWay = QString("file.txt");
Run Code Online (Sandbox Code Playgroud)
程序意外以错误结束
下级停止了,因为它收到了来自操作系统的信号。信号名称:SIGSEGV 信号含义:分段错误
在文件“qatomic_i386.h”中
我做错了什么?此代码示例适用于 int、bool 或 double 变量,但不适用于 QString。为什么?我尝试在没有 QString 构造函数的情况下编写,使用简单的等式
LogWay = "...";
Run Code Online (Sandbox Code Playgroud)
但我有同样的错误。感谢您的帮助。
类的完整代码:
这是 .h 文件 #include
const double _ACCURACY_ = 0.0001;
static const QString _LOG_WAY_ = "GrafPrinterLog.txt";
class GlobalSet
{
private:
static QSettings *_Settings;
GlobalSet(){}
GlobalSet(const GlobalSet&){}
GlobalSet &operator=(const GlobalSet&);
static GlobalSet *GS;
public:
static double IntToCut;
static double ReplaceSize;
static double Accuracy;
static int MaxPointCount;
static bool NeedProper;
static QString LogWay; …Run Code Online (Sandbox Code Playgroud) 您可能知道,0xFFFFFFFF在Two's Complement表示中等于-1(对于32位).但是以下代码:
qint32 aa = QString("FFFFFFFF").toInt(0, 16);
qDebug()<<aa;
Run Code Online (Sandbox Code Playgroud)
打印0.代码如下:
qint32 aa = 0xffffffff;
qDebug()<<aa;
Run Code Online (Sandbox Code Playgroud)
打印-1!
为什么是这样?
我试图得到一个字符串的图片(在Qt中),即QImage从a QString(std::string也很好)制作a ,最好是给定分辨率.虽然问题似乎微不足道,但我无法弄清楚这样做的正确方法.
构造函数的显而易见的想法QImage(const QString& string)显然不起作用,因为它读取了描述的文件string.那么这样做的正确方法是什么?
我试图使用Qt4.8文档中给出的示例:
#include <QCoreApplication>
#include <QString>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString str;
str = "%1 %2";
str.arg("%1f", "Hello"); // returns "%1f Hello"
std::cout << str.toStdString().c_str() << std::endl;
str.arg("%1f").arg("Hello"); // returns "Hellof %2"
std::cout << str.toStdString().c_str() << std::endl;
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
然而,这输出:
%1 %2
%1 %2
两次.我在Windows 7和Ubuntu上尝试过这个,使用QtCreator和命令行.我检查过了
QMake version 2.01a
Using Qt version 4.8.1 in /usr/lib/x86_64-linux-gnu
在Windows中:
QMake version 2.01a
Using Qt version 4.7.0 in C:\qt\4.7.0\lib
我甚至检查了我的源文件中的非ascii字符,例如"%"符号是正确的.请告诉我为什么这不起作用!
这是我正在使用的PRO文件:
QT += core
QT -= gui …Run Code Online (Sandbox Code Playgroud) QString msgText = QString("The file has been saved at %1\sysconf.xml").arg(QApplication::applicationDirPath);
Run Code Online (Sandbox Code Playgroud)
给我上面的错误.我.arg()之前使用过,所以我想知道它为什么会给我这个错误?.arg()我的代码中的所有其他代码都正常工作.
我正在尝试修改QString。我要修改的Qstring是
"\002"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试修改它时,该字符串要么被完全删除,要么没有显示任何变化。
我试过了
String.split("\"");
String.remove("\"");
String.remove(QChar('\'');
Run Code Online (Sandbox Code Playgroud)
由于某种原因,Qt要求我添加一个额外的“或”以进行编译而不产生错误
我现在有这个
string = pointer->data.info.get_type();
Run Code Online (Sandbox Code Playgroud)
根据调试器返回“ \ 002”
string = string.remove(QChar('\''));
Run Code Online (Sandbox Code Playgroud)
删除功能之后什么也不做。
我期望从字符串中删除\,但是要么将其完全删除,要么什么也没有发生。可能是什么问题,如何将Qstring修改为数值?