C++ 全局声明QStringlist变量,使用QFileDialog获取位置路径,并将其打印到lineEdit,然后在QProcess中使用它
我正在使用Qt,我需要一些帮助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请求。 请给我一些例子。您应该重新考虑使用全局变量;通常最好将引用传递给需要访问它的函数,但如果必须这样做,这就是方法。在一
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列表;列表AQLineEdit
需要一个字符串,您正在传递任意数量的字符串-您希望如何格式化?是的,我的QStringList只包含1个字符串:D,但我希望只使用QStringList而不是QString。奇怪的逻辑。在你的情况下,我会用QString,但是_(ツ)_/“.AQLineEdit
需要一个字符串,您正在传递任意数量的字符串-您希望如何格式化?是的,我的QStringList只包含1个字符串:D,但我希望只使用QStringList而不是QString。奇怪的逻辑。在您的情况下,我会使用QString,但是”_(ツ)_/“”.哦,如何传递对其他函数的引用以访问其变量?这似乎是一个好主意,而不是全局声明您只需像任何其他函数参数一样声明它,但在类型后加上一个“&”。例如,void foo(QStringList&bar)如果你还不知道,你应该在你进行更深入的研究之前,拿起一本C++的书。我试过了,但我在错误编译时又犯了一个错误:错误:“空洞主窗口:”:OnthPuxButoNo1212Krand(qStand):'与类'MainWindow'中的任何函数都不匹配您可能缺少类主体中函数的声明,或者声明与您的定义不匹配。不,当我从参数中删除'QString&myvariable'时,它会正确编译,当我尝试int&myvariable'时,它也会正确编译,但不使用QString如何传递对的引用访问i的其他功能