Qt QCompleter中的QLineEdit不';不显示所有项目
我正在尝试使用QCompleter创建一个菜单应用程序(如windows search)。 我想在QLineEdit为空时显示completer中的所有项目。 它第一次起作用,但当我开始在Qt QCompleter中的QLineEdit不';不显示所有项目,qt,menu,Qt,Menu,我正在尝试使用QCompleter创建一个菜单应用程序(如windows search)。 我想在QLineEdit为空时显示completer中的所有项目。 它第一次起作用,但当我开始在lineEdit中键入内容,并从lineEdit中删除所有字符,然后按Enter时,我什么也看不到。我的错在哪里 我的代码如下 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindo
lineEdit
中键入内容,并从lineEdit
中删除所有字符,然后按Enter
时,我什么也看不到。我的错在哪里
我的代码如下
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
this->wordList << "alpha" << "omega" << "omicron" << "zeta" << "icon";
this->lineEdit = new QLineEdit(this);
completer = new QCompleter(wordList, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
lineEdit->setCompleter(completer);
completer->QCompleter::complete();
ui->setupUi(this);
}
MainWindow::MainWindow(QWidget*父项)
:QMainWindow(父级)
,ui(新ui::Main窗口)
{
this->wordList setupUi(this);
}
void主窗口::按键事件(QKeyEvent*event)
{
如果((事件->键()==Qt::键|返回|事件->键()==Qt::键|输入))
{
如果(lineEdit->text()==“”)
{
完成符->完成();
}
if(wordList.contains(lineEdit->text(),Qt::不区分大小写))
qDebug()您需要在完成符上重置完成前缀
if(event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
{
if(lineEdit->text().isEmpty())
{
lineEdit->completer()->setCompletionPrefix("");
lineEdit->completer()->complete();
}
}
此外,如果目的是仅在行编辑中按return键时填充行编辑,则您将希望创建自己的行编辑来处理此问题,而不是使用主窗口。它可以工作,谢谢!您是一位国王。:)Qt对我来说真的很新,所以我处于低级别,再次感谢!)
if(event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter)
{
if(lineEdit->text().isEmpty())
{
lineEdit->completer()->setCompletionPrefix("");
lineEdit->completer()->complete();
}
}