我创建了一个简单的QListView
添加了QStringListModel
,允许添加项目并编辑其文本。但是我不想允许添加空字段,并且我通过使用模型中的dataChanged
信号来部分实现这一点,如果列表项没有插入文本或用户按下{{1没有添加文本的密钥。
但是,如果按Enter
键,该字段将保持为空,并且不会发出Esc
信号。如果该字段为空而没有重载dataChanged
类,这将是多余的(我使用设计器创建表单),我如何得到通知?
是否有另一个发出的信号或我可以用来实现的信号?
谢谢!
答案 0 :(得分:5)
在主GUI类中使用event filters:
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 Designer中使用自定义小部件很简单。右键单击QListView并选择Promote to ...添加一个新类并将其应用于小部件。
http://qt-project.org/doc/qt-4.8/designer-using-custom-widgets.html