rcv*_*rcv 6 user-interface qt qt4
我有一个QTableView我正在显示自定义模型.我想要点击鼠标右键,以便我可以打开基础表数据的上下文下拉菜单:
MainWindow::MainWindow()
{
QTableView * itsView = new QTableView;
itsView->installEventFilter(this);
... //Add other widgets and display them all
}
bool MainWindow::eventFilter(QObject * watched, QEvent * event)
{
if(event->type() == QEvent::MouseButtonPress)
printf("MouseButtonPress event!\n");
else if(event->type() == QEvent::KeyPress)
printf("KeyPress event!\n");
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我正确地获得了所有的KeyPress事件:当我突出显示一个单元格并按下一个键时,我收到" KeyPress事件! "消息.但是,当我点击整个桌子周围非常薄的边框时,我只收到" MouseButtonPress事件! "消息.
And*_*y M 10
这是因为Tableview是这个薄边框...如果你想访问小部件的内容,你应该在Tableview的视口上安装eventFilter !
因此,我建议:
QTableView * itsView = new QTableView;
itsView->viewport()->installEventFilter(this);
Run Code Online (Sandbox Code Playgroud)
试试这个,它应该解决你的问题!
希望能帮助到你 !
| 归档时间: |
|
| 查看次数: |
4164 次 |
| 最近记录: |