QListView 的 Esc 按键事件



我创建了一个简单的QListView添加了一个允许添加项目和编辑其文本的QStringListModel。但是我不想允许添加空字段,我通过使用模型的dataChanged信号部分实现了这一点,如果列表项在没有插入文本的情况下失去焦点或用户按Enter键而不添加文本,则会发出该信号。

但是,如果按Esc键,该字段将保持为空,并且不会发出dataChanged信号。如果字段留空而不重载QListView类,我如何获得通知,这将很乏味(我使用设计器创建表单)?

是否有其他信号发射或我可以用来实现它的方法?

谢谢!

在主 GUI 类中使用事件过滤器:

void GUI::GUI()
{     
    ui->mListView->installEventFilter(this);
}
bool GUI::eventFilter(QObject *object, QEvent *event)
{
    if (object == ui->mListView && event->type() == QEvent::KeyPress) {
        QKeyEvent *ke = static_cast<QKeyEvent *>(event);
        if (ke->key() == Qt::Key_Escape)
           // special Esc handling here
    }
    else
        return false;
}

在Qt设计器中使用自定义小部件很简单。右键单击 QListView 并选择提升到...在那里添加一个新类并将其应用于小部件。

http://qt-project.org/doc/qt-4.8/designer-using-custom-widgets.html

相关内容

  • 没有找到相关文章

最新更新