QFileSystemModel is not working on Linux with QCompleter for ~username/....



  • I have used QFileSystemModel for QCompleter. On windows it works fine but on linux when I type ~gyeole/ it does not popup for auto completion. But if I type "/" then it pops up. Any suggestion to access directory with ~gyeole/....


  • Lifetime Qt Champion

    Hi,

    Can you share the code you are using for initialising Completer and the rest so it can be tested ?



  • QFileSystemModel *fModel = new QFileSystemModel();
    fModel->setRootPath("");
    m_dirCompleter->setModel(fModel);
    m_dirCompleter->setCompletionMode(QCompleter::PopupCompletion);
    QObject::connect(m_dirCompleter, SIGNAL(activated(QString)),
    this, SLOT(insertCompletion(QString)));

    //m_dirCompleter is QCompleter

    //In QTextEdit in keyPressEvent captuaring edited text for poping up auto completion
    //getCompleter () returns m_dirCompleter
    getCompleter()->setCompletionPrefix(str1);
    getCompleter()->popup()->setCurrentIndex(getCompleter()->completionModel()->index(0, 0));
    cr = cursorRect();
    cr.setWidth(getCompleter()->popup()->sizeHintForColumn(0)
    + getCompleter()->popup()->verticalScrollBar()->sizeHint().width());
    getCompleter()->complete(cr);
    popupVisible = true;

    void CxConsoleQt::insertCompletion(const QString& string)
    {
    std::string str = qPrintable(string);
    int extra = string.length() - getCompleter()->completionPrefix().length();
    m_inputCursor.insertText(string.right(extra));
    this->setTextCursor(m_inputCursor);
    m_editableLength += extra;
    }



  • @Gitesh-Yeole
    Can you please use code tags as it makes it more readable?


  • Lifetime Qt Champion

    Note that the tilde handling in bash has nothing do to with path handling within a library, some will do the expansion for you under the hood but that's not something you should rely on for auto completion like that.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.