Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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++ 全局声明QStringlist变量,使用QFileDialog获取位置路径,并将其打印到lineEdit,然后在QProcess中使用它_C++_Qt_Qt4_Qt4.8 - Fatal编程技术网

C++ 全局声明QStringlist变量,使用QFileDialog获取位置路径,并将其打印到lineEdit,然后在QProcess中使用它

C++ 全局声明QStringlist变量,使用QFileDialog获取位置路径,并将其打印到lineEdit,然后在QProcess中使用它,c++,qt,qt4,qt4.8,C++,Qt,Qt4,Qt4.8,我正在使用Qt,我需要一些帮助 如何在Qt中全局声明QStringList变量,以便我可以在任何函数中访问它 如何将QStringList中的所有内容(它包含从QFileDialog获取的文件路径)打印到lineEdit 我试过: ui->lineEdit->setText(filename); 但它给了我错误:QString到非标量类型QStringList请求。 请给我一些例子。您应该重新考虑使用全局变量;通常最好将引用传递给需要访问它的函数,但如果必须这样做,这就是方法。在一

我正在使用Qt,我需要一些帮助

  • 如何在Qt中全局声明
    QStringList
    变量,以便我可以在任何函数中访问它

  • 如何将
    QStringList
    中的所有内容(它包含从
    QFileDialog
    获取的文件路径)打印到
    lineEdit

  • 我试过:

    ui->lineEdit->setText(filename);
    
    但它给了我错误:
    QString
    到非标量类型
    QStringList
    请求。
    请给我一些例子。

    您应该重新考虑使用全局变量;通常最好将引用传递给需要访问它的函数,但如果必须这样做,这就是方法。在一个源文件中按常规放置定义

    QStringList foo;
    
    并在头文件中放入一个extern声明,该头文件包含在所有要使用它的文件中,如下所示

    extern QStringList foo;
    

    想要将字符串列表传递给行编辑似乎也是错误的;最好像它期望的那样传入一个字符串,但如果您绝对必须传入一个列表,则必须将QLineEdit子类化,并为其提供一个方法,该方法接受一个字符串列表并从该列表中获取一个字符串,然后将该字符串传递给QLineEdit::setText。

    您应该重新考虑使用一个全局变量;通常最好将引用传递给需要访问它的函数,但如果必须这样做,这就是方法。在一个源文件中按常规放置定义

    QStringList foo;
    
    并在头文件中放入一个extern声明,该头文件包含在所有要使用它的文件中,如下所示

    extern QStringList foo;
    
    想要将字符串列表传递给行编辑似乎也是错误的;最好像它期望的那样传入一个字符串,但如果您绝对必须传入一个列表,则必须将QLineEdit子类化,并为其提供一个方法,该方法接受一个字符串列表,并从该列表中获取一个字符串,然后将该字符串传递给QLineEdit::setText

    如何在Qt中全局声明QStringList变量,以便我可以在任何函数中访问它

    这不是一个<代码> QT问题,但是一个通用C++(全局变量在这些日子里是不被接受的,一个更可接受的等价物是单体,所以对于许多例子进行搜索)。尽管如此,一种方法是创建

    QStringList
    ,作为实例化
    QFileDialog
    的类的静态成员,同一个类将是从对话框中检索到它的类,通过静态存储(并返回)它,可以有效地使其全局化:

    class A
    {
    public:
        void openFileDialog() { // Open the dialog, and store the results in list_. }
        static const QStringList& getFileList() { return list_; }
    private:
        static list_;
    }
    
    // Just call by:
    QStringList list = A::getFileList();
    
    如何打印QStringList中的所有内容(它包含从QFileDialog获取的文件路径)


    是的,我的QStringList只包含1个字符串

    如果您的
    QStringList
    只包含一个字符串,请使用:

    ui->lineEdit->setText(list_[0]);
    
    请记住,
    QStringList
    是从
    QVector
    派生的,因此您可以像访问任何元素一样访问单个
    QString
    s

    为了扩展您的第一个问题,有无数种方法可以将字符串列表组合成一个字符串。但是使用
    QStringList
    的一种非常常见(且简单)的方法是使用
    join()

    QStringList列表;列表
    如何在Qt中全局声明QStringList变量,以便我可以在任何函数中访问它

    这不是一个<代码> QT问题,但是一个通用C++(全局变量在这些日子里是不被接受的,一个更可接受的等价物是单体,所以对于许多例子进行搜索)。尽管如此,一种方法是创建

    QStringList
    ,作为实例化
    QFileDialog
    的类的静态成员,同一个类将是从对话框中检索到它的类,通过静态存储(并返回)它,可以有效地使其全局化:

    class A
    {
    public:
        void openFileDialog() { // Open the dialog, and store the results in list_. }
        static const QStringList& getFileList() { return list_; }
    private:
        static list_;
    }
    
    // Just call by:
    QStringList list = A::getFileList();
    
    如何打印QStringList中的所有内容(它包含从QFileDialog获取的文件路径)


    是的,我的QStringList只包含1个字符串

    如果您的
    QStringList
    只包含一个字符串,请使用:

    ui->lineEdit->setText(list_[0]);
    
    请记住,
    QStringList
    是从
    QVector
    派生的,因此您可以像访问任何元素一样访问单个
    QString
    s

    为了扩展您的第一个问题,有无数种方法可以将字符串列表组合成一个字符串。但是使用
    QStringList
    的一种非常常见(且简单)的方法是使用
    join()


    QStringList列表;列表A
    QLineEdit
    需要一个字符串,您正在传递任意数量的字符串-您希望如何格式化?是的,我的QStringList只包含1个字符串:D,但我希望只使用QStringList而不是QString。奇怪的逻辑。在你的情况下,我会用QString,但是_(ツ)_/“.A
    QLineEdit
    需要一个字符串,您正在传递任意数量的字符串-您希望如何格式化?是的,我的QStringList只包含1个字符串:D,但我希望只使用QStringList而不是QString。奇怪的逻辑。在您的情况下,我会使用QString,但是”_(ツ)_/“”.哦,如何传递对其他函数的引用以访问其变量?这似乎是一个好主意,而不是全局声明您只需像任何其他函数参数一样声明它,但在类型后加上一个“&”。例如,void foo(QStringList&bar)如果你还不知道,你应该在你进行更深入的研究之前,拿起一本C++的书。我试过了,但我在错误编译时又犯了一个错误:错误:“空洞主窗口:”:OnthPuxButoNo1212Krand(qStand):'与类'MainWindow'中的任何函数都不匹配您可能缺少类主体中函数的声明,或者声明与您的定义不匹配。不,当我从参数中删除'QString&myvariable'时,它会正确编译,当我尝试int&myvariable'时,它也会正确编译,但不使用QString如何传递对的引用访问i的其他功能