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

标签 c++ qt qt4 qt4.8

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

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

  2. 如何将 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/

相关文章:

c++ - 使无符号整数下溢引发异常

c++ - 我怎样才能使 Qt 应用程序更小

qt - 如何编译这个qt程序(没有任何pro文件)?

c++ - 如果我是根据较早的if条件创建的,如何在代码中使用后者的实例?

c++ - 如果需要超过 5 秒,如何退出使用 C++ 运行的进程?

c++ - 从 C++ 程序控制闪存系统

c++ - const 数据的初始化值

qt - 在带有 QSqlQueryModel 的 QListView 上使用 QStyledItemDelegate

c++ - C++03 后期绑定(bind)接口(interface)的设计模式

c++ - 如何从QWebEnginePage获取网站内容?