所以,我有兩個QLineEdits在lineEDit和fileName_Edit程序中。 lineEdit保存目錄的路徑(從用戶獲取)。然後用戶在fileName_Edit中輸入文件的名稱。我想在用戶輸入fileName_Edit中的文件名時向用戶顯示建議。我試圖執行QCompeter這樣的:
(dirContents是保存用戶在lineEdit指定的目錄中的內容QStringList中)爲什麼使用QCompleter進行自動完成的QLineEdit不顯示?
void MainWindow::on_lineEdit_textChanged(const QString &arg1)
{
QCompleter *fileEditCompleter = new QCompleter(dirContents, this);
fileEditCompleter->setCaseSensitivity(Qt::CaseInsensitive);
fileEditCompleter->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
ui->fileName_Edit->setCompleter(fileEditCompleter);
}
程序編譯成功,但是,完成者並沒有顯示出來。即使我嘗試將textChanged信號連接到如下所示的函數,它也不會顯示出來。
QObject::connect(&MainWindow::ui->lineEdit, SIGNAL(&textChanged(QString)), this,SLOT(&MainWindow::on_lineEdit_editingFinished()));
編輯:添加上述行給出了一個錯誤說:Expected constructor, destructor or type-conversion before (token
Anyhelp將大大appreceated。
嘗試設置完成者_before_向用戶提供'QLineEdit'。例如 - 在MainWindow的構造函數中。將其設置在textChanged插槽中是不正確的。 – 2014-09-26 13:36:26
@DmitrySazonov感謝您的回覆,請給出一些示例代碼? – 2014-09-26 13:44:10
我不認爲你需要在lineEdit之前創建Completer。 Qt文檔以同樣的方式執行。但在textChanged插槽中這樣做,不知道這是否如此好。 dirContents來自哪裏也不完全清楚。你確定它不是空的嗎?你確定這個方法被調用嗎?也許你想用editFinished信號來調用它? – 2014-09-26 14:23:36