我使用Qt和我需要一些帮助
QStringList
变量在全球范围内的Qt,这样我可以在任何函数访问它?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
s就像任何元素。
只是为了扩大你的第一个问题,有办法字符串列表可以合并成一个单一的一个无穷数。但随着QStringList
非常常见(容易)的方法是使用join()
:
QStringList list; list << "This" << "is" << "a" << "list.";
list.join( " " ); // "This is a list. "
我真的建议使用docs,Qt的辉煌。
你应该重新考虑使用全局变量;它通常是更好地传递给需要访问它的功能的引用,但如果你一定要,你这是怎么做到这一点。把定义为正常在源文件中的一个
QStringList foo;
并放在一个头文件extern声明,你在所有你想用它在这样的文件包括
extern QStringList foo;
希望通过串线编辑也似乎被误导的列表;它会更好,只是传递一个字符串喜欢它预计,但如果你绝对必须在列表传给你将不得不继承QLineEdit的,并给它取一个字符串列表,并从它传递给该列表获取字符串的方法QLineEdit的::的setText。