gpt4 book ai didi

c++ - QCompleter - 如何从文件导入数据

转载 作者:太空宇宙 更新时间:2023-11-04 13:18:03 25 4
gpt4 key购买 nike

我对 Qt 很陌生。我试图在这里找到答案,但到目前为止没有成功。我在 main.cpp 文件中有一个复杂结构的 vector ,我想将它用作我在 mainwindow.cpp 的 void 函数中定义的 QCompleter 的输入,该函数除其他外还创建了一个我关联的 QLineEdit这个 QCompleter。我应该如何将这个 vector 转移到我的完成者?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

最佳答案

你试过什么?通常,您可以像这样使用它:

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

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

myLineEdit->setCompleter(myCompleter);

在您的示例中,我会将列表传递给您的类(class):

// 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 是一个保留关键字,所以你应该只使用你的构造函数

关于c++ - QCompleter - 如何从文件导入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com