【问题标题】:QCombobox write "HELLO" when press backspace按退格键时 QCombobox 写“HELLO”
【发布时间】:2017-11-08 14:05:41
【问题描述】:

当我按下 Qcombobox->linEdit() 时,我想要截取信号,键 Backpace 并清除所有文本。 我在网上看到,我写了这段代码,但它不起作用。似乎没有调用keypressevent函数..一些提示???

 MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        ui->comboBox->addItem("11");
        ui->comboBox->addItem("21");
        ui->comboBox->addItem("32");
        ui->comboBox->addItem("41");
        ui->comboBox->addItem("54");
    }

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
  if (obj == ui->comboBox) {
     if (event->type() == QEvent::KeyPress) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
         qDebug()<<"Ciao";
         if (keyEvent->key() == Qt::Key_Backspace)
         {
             ui->comboBox->clearEditText();
             return true;
         }
  }
     // pass the event on to the parent class
     return QMainWindow::eventFilter(obj, event);
}
}
MainWindow::~MainWindow()
{
    delete ui;
}

【问题讨论】:

  • 什么不起作用?方法eventFilter被调用了吗?
  • eventFilter 没有被调用。我没有在输出中查看“CIAO”
  • 我认为你需要“安装”这个eventFilter : here 是怎么做的。
  • 也许你只想要一个 placeholder ?如果是这样,请参阅此答案:stackoverflow.com/a/18275148/6165833

标签: qt qcombobox qevent


【解决方案1】:

添加ui-&gt;comboBox-&gt;installEventFilter(this);

【讨论】:

  • 欢迎来到 Stack Overflow!尽管此代码可能有助于解决问题,但它并没有解释 why 和/或 如何 回答问题。提供这种额外的背景将显着提高其长期价值。请edit您的答案添加解释,包括适用的限制和假设。
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多