2016-04-06 4 views
1

Qtが新しくなりました。私はここで答えを見つけようとしましたが、これまで成功していませんでした。 私はmain.cppファイルに複雑な構造体のベクトルを持っています。私はmainWindow.cppのvoid関数で定義したQCompleterの入力として使用したいと思います。QLineEditを作成します。このQCompleterを関連付けます。 このベクターをコンプリータにどのように転送すればよいですか? main.cppにの パート:MainWindows.cppのQCompleter - ファイルからデータをインポートする方法

//... 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(); 

一部:知らないようだ

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

:LocationStringList

+0

https://stackoverflow.com/questions/5090969/read-a-text-file-to-qstringlist – sashoalm

答えて

0

あなたは何を試してみましたか?通常、あなたはこのようにそれを使用することができます:あなたの例では

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

私の質問はそれより基本的だと思います。私は自分のLocationListStringについて警告していません。私はそれが大丈夫だと思います。それはmainWindow.cppファイルでそれについて知らないようです。それを知らせるには? – arnaud1000

+0

私は自分の答えを編集しました – IceFire

関連する問題