我正在使用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很出色。