我正在使用 Qt,我需要一些帮助
如何在 Qt 中全局声明
QStringList
变量,以便我可以在任何函数中访问它?如何将
QStringList
中的所有内容(它包含从QFileDialog
获取的文件路径)打印到lineEdit
?
我试过:
ui->lineEdit->setText(filename);
但它给了我错误 error:QString
to non-scalar type QStringList
requested.
请给我一些例子。
最佳答案
How to declare QStringList variable globally in Qt so that I can access it in any function
这不是 Qt
问题,而是一个通用的 C++ 问题(如今,全局变量不受欢迎,更可接受的等价物是单例,搜索 SO 以获取大量示例)。尽管如此,一种方法是创建 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();
How to print all the stuff in QStringList(it contains the file path which it took from QFileDialog)
Yes, my QStringList contains only 1 string
好吧,如果你的 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 很棒。
关于c++ - 全局声明 QStringlist 变量,使用 QFileDialog 获取位置路径并将其打印到 lineEdit 并在 QProcess 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781851/