QCompleter - 如何从文件导入数据
QCompleter - how to import data from file
我对 Qt 很陌生。我试图在这里找到答案,但到目前为止没有成功。
我在 main.cpp 文件中有一个复杂结构的向量,我想将它用作我在 mainwindow.cpp 的空函数中定义的 QCompleter 的输入,该函数除其他外创建 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
你试过什么?通常,您可以这样使用它:
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
是保留关键字,因此您应该只使用构造函数
我对 Qt 很陌生。我试图在这里找到答案,但到目前为止没有成功。 我在 main.cpp 文件中有一个复杂结构的向量,我想将它用作我在 mainwindow.cpp 的空函数中定义的 QCompleter 的输入,该函数除其他外创建 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
你试过什么?通常,您可以这样使用它:
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
是保留关键字,因此您应该只使用构造函数