我正在使用Qt,需要帮助


如何在Qt中全局声明QStringList变量,以便我可以在任何函数中访问它?
如何打印QStringList中的所有内容(包含从QFileDialog提取的文件路径)到lineEdit


我试过了:

ui->lineEdit->setText(filename);


但这给了我错误错误:QString要求为非标量类型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 >派生的,因此您可以像访问任何元素一样访问各个QString

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

QStringList list; list << "This" << "is" << "a" << "list.";
list.join( " " ); // "This is a list. "


我真的建议使用docs,Qt很出色。

07-27 19:26