标题:如何知道QTableView的行有没有被选中
作者:meteor
日期:2009-09-17 13:57
内容:
如题,碰到这种问题,QTableView 中有几行,当用户点击鼠标且没有任何一行都被选中的话(比如点到了视图的空白处),就会屏蔽掉一些按钮。不知道是否有这样的signal?
#1 [robertkun 09-17 14:38]
如果不点击QTableView 那怎样触发QTableView的 消息呢?
不过可以给QTableview加QItemSelectionModel ,QItemSelectionModel 包含一些函数
isColumnSelected ( int, const QModelIndex & ) const : bool
isRowSelected ( int, const QModelIndex & ) const : bool
isSelected ( const QModelIndex & ) const : bool
#2 [meteor 09-17 17:53]
点击QTableView的空白部分不会触发信号,这是关键。clicked和doubleclicked只会在存在的行上点击才会发出信号。
我想是否应该监听鼠标事件呢?
#3 [meteor 09-19 00:43]
问题解决。QTableView没有处理点击空白处的singal,所以继承了QTableView类,重载了mousePressEvent。
void QMyTableView::mousePressEvent(QMouseEvent * event)
{
int xPos = event->x();
int yPos = event->y();
QModelIndex idx = indexAt(QPoint(xPos, yPos));
if(idx.isValid( ))
{
emit ClickValidArea();
}
else
{
emit ClickBlankArea();
}
QTableView::mousePressEvent(event);
}
#4 [robertkun 09-19 10:34]
QModelIndex idx = indexAt(QPoint(xPos, yPos));
QModelIndex?这个东东还没有用过。。
看起来还挺爽的~
#5 [wywwh 03-01 21:43]
mark