Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt GUI使用按钮打开文件_C++_Qt_User Interface - Fatal编程技术网

C++ Qt GUI使用按钮打开文件

C++ Qt GUI使用按钮打开文件,c++,qt,user-interface,C++,Qt,User Interface,我需要创建带有行编辑的QtGUI按钮,按下该按钮可以浏览文件夹,找到要导入的文本文件。随后将解析文本文件。我更喜欢使用combobox,但我不知道如何通过gui浏览文件夹。也许QDir相关的东西应该有用,但请帮忙 基本上,我想使用按钮/组合框导入/打开文本文件 您可能想要使用,在该QT文档中几乎没有示例。您可能想要使用,在该QT文档中几乎没有示例。您正在寻找的是 将QPushButton的单击信号连接到执行以下操作的插槽: QString fileName = QFileDialog::getO

我需要创建带有行编辑的QtGUI按钮,按下该按钮可以浏览文件夹,找到要导入的文本文件。随后将解析文本文件。我更喜欢使用combobox,但我不知道如何通过gui浏览文件夹。也许QDir相关的东西应该有用,但请帮忙


基本上,我想使用按钮/组合框导入/打开文本文件

您可能想要使用,在该QT文档中几乎没有示例。

您可能想要使用,在该QT文档中几乎没有示例。

您正在寻找的是

将QPushButton的单击信号连接到执行以下操作的插槽:

QString fileName = QFileDialog::getOpenFileName(this,
    tr("Open Text file"), "", tr("Text Files (*.txt)"));
然后,您可以使用以下方法解析文件,例如:

编辑

如果您想解析一个文件,其中每行包含31个浮点,您想将其存储在浮点数据[31]中,我首先创建一个类:

struct FloatLine { float data[31]; };
然后将所有行存储在QList中,方法如下:

QList<FloatLine> floatLines;
QTextStream in(&file);
while (!in.atEnd())
{
    QString line = in.readLine();
    QTextStream lineStream(&line);
    floatLines << FloatLine();
    for(int i=0; i<31; i++)
            lineStream >> floatLines.last().data[i];
}

你要找的是

将QPushButton的单击信号连接到执行以下操作的插槽:

QString fileName = QFileDialog::getOpenFileName(this,
    tr("Open Text file"), "", tr("Text Files (*.txt)"));
然后,您可以使用以下方法解析文件,例如:

编辑

如果您想解析一个文件,其中每行包含31个浮点,您想将其存储在浮点数据[31]中,我首先创建一个类:

struct FloatLine { float data[31]; };
然后将所有行存储在QList中,方法如下:

QList<FloatLine> floatLines;
QTextStream in(&file);
while (!in.atEnd())
{
    QString line = in.readLine();
    QTextStream lineStream(&line);
    floatLines << FloatLine();
    for(int i=0; i<31; i++)
            lineStream >> floatLines.last().data[i];
}

非常感谢你!现在我得到一个错误,说“fileName”没有在这个范围内声明,而“process_line”没有在这个范围内声明。还有什么我需要做的吗?@user2730981第一个错误是我纠正的代码中的一个输入错误。对于第二种情况,process_lineline只是您希望编写的内容的一个示例。你必须用你自己的代码来代替它,去做你想做的事情。要测试的第一个工作代码是:qDebugline;。谢谢我还有最后一个问题。。。如果我要将每一行存储到float中,我该怎么做呢?基本上,我每行有31个浮点索引,我想把它们保存为数据[n++]。我现在遇到一个错误“无法将“float”转换为“const char*”,我有一段时间!in.atEnd{QString line_value=in.readLine;浮点数据[31];int n=0;whileline_value!=NULL{data[n++]=atofline_value.toFloat;line_value=strtokNULL,分隔符;}如果我不使用.toFloat,那么它会说无法将'QString'转换为'const char*'我得到一个错误:'template class QList'的模板参数使用本地类型'MainWindow::on\u moveButton\u clicked::FLoatLine'…这意味着什么?我以前从未使用过QList,所以我不确定正确的用法谢谢!现在我收到一个错误,说'fileName'w因为没有在这个范围内声明,并且“process_line”没有在这个范围内声明。我还需要做什么吗?@user2730981第一个错误是我的代码中的一个输入错误,我已经更正了。第二个错误,process_line只是你想写的东西的一个例子。你必须用你自己的代码替换它,做你想做的事情要做。第一个要测试的工作代码是:qDebugline;。谢谢!我有最后一个问题…如果我要将每行存储到float中,我该怎么做?基本上,每行有31个float索引,我想将它们保存为数据[n++]。我得到一个错误“现在无法将“float”转换为“const char*”,我有while!in.atEnd{QString line_value=in.readLine;float data[31];int n=0;whileline_value!=NULL{data[n++]=atofline_value.toFloat;line_value=strtokNULL,分隔符;}如果我不使用.toFloat,那么它会说无法将'QString'转换为'const char*'我得到一个错误:'template class QList'的模板参数使用本地类型'MainWindow::on\u moveButton\u clicked::FLoatLine'…这意味着什么?我以前从未使用过QList,所以我不确定正确的用法