QCompleter — как импортировать данные из файла

Я довольно новичок в Qt. Я пытался найти ответы здесь, но пока не получилось.
У меня есть в файле main.cpp вектор сложной структуры, и я хотел бы использовать его в качестве входных данных для QCompleter, который я определил в void-функции моего mainwindow.cpp, которая создает среди прочего QLineEdit, с которым я ассоциирую этот QCompleter.
Как мне перенести этот вектор на мой комплектник?
Часть main.cpp:

//... l is a vector based on a struct containing, among other thing , string name.
QApplication a(argc, argv);
QStringList *LocationStringList=new QStringList;
for (int k=0;k!=l.size();k++)   {
LocationStringList->append(QString::fromStdString(l[k].name));
}
MainWindow w;
w.show();

часть MainWindows.cpp:

void MainWindow::new()
{
...
QCompleter *cmpt;
cmpt=new QCompleter(LocationStringList,this);
cmpt->setCaseSensitivity(Qt::CaseInsensitive);
QLineEdit *locationLineEdit = new QLineEdit();
locationLineEdit->setCompleter(cmpt);
...

Кажется, он не знает: LocationStringList

1

Решение

Что вы пробовали? Обычно вы можете использовать это так:

QStringList list;
for(auto& complexStructObject : complexStructList)
list << complexStructObject.getStringForCompletion();

QCompleter* myCompleter = new QCompleter(list, this);

myLineEdit->setCompleter(myCompleter);

В вашем примере я передам список вашему классу:

// main.cpp

// above keeps unchanged
MainWindow w(LocationStringList);
w.show();
// at the end, do not forget to delete!! your string list is not managed; better yet use a unique_ptr

// MainWindow.h
#include <QStringList>

class MainWindow
{
Q_OBJECT
public:
MainWindow(QStringList* stringList);

// ...
};

// MainWindows.cpp
MainWindow::MainWindow(QStringList* stringList)
{
QCompleter *cmpt;
cmpt=new QCompleter(*stringList, this);
cmpt->setCaseSensitivity(Qt::CaseInsensitive);
QLineEdit *locationLineEdit = new QLineEdit();
locationLineEdit->setCompleter(cmpt);
}

new является зарезервированным ключевым словом, так что вы, вероятно, должны просто использовать свой конструктор

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]