• 12109阅读
  • 8回复

如何知道QTableView的行有没有被选中 [复制链接]

上一主题 下一主题
离线meteor
 
只看楼主 正序阅读 楼主  发表于: 2009-09-17
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
如题,碰到这种问题,QTableView 中有几行,当用户点击鼠标且没有任何一行都被选中的话(比如点到了视图的空白处),就会屏蔽掉一些按钮。不知道是否有这样的signal?
离线lwei24

只看该作者 8楼 发表于: 2021-02-23
楼主,请问怎么插入空白行呢?这两个ClickValidArea();  ClickBlankArea();信号应该是自定义的吧
离线lanmanck

只看该作者 7楼 发表于: 2020-12-19
牛的比,用event->pos即可
精彩博客:labisart.com
离线wangweiqi23
只看该作者 6楼 发表于: 2011-08-02
   想法赞一个
离线wywwh
只看该作者 5楼 发表于: 2010-03-01
mark
离线robertkun

只看该作者 4楼 发表于: 2009-09-19
QModelIndex idx = indexAt(QPoint(xPos, yPos));

QModelIndex?这个东东还没有用过。。
看起来还挺爽的~
                                              简单的生活使人快乐!
离线meteor
只看该作者 3楼 发表于: 2009-09-19
问题解决。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);
}
离线meteor
只看该作者 2楼 发表于: 2009-09-17
点击QTableView的空白部分不会触发信号,这是关键。clicked和doubleclicked只会在存在的行上点击才会发出信号。
我想是否应该监听鼠标事件呢?
[ 此帖被meteor在2009-09-17 18:00重新编辑 ]
离线robertkun

只看该作者 1楼 发表于: 2009-09-17
如果不点击QTableView 那怎样触发QTableView的 消息呢?

不过可以给QTableview加QItemSelectionModel ,QItemSelectionModel 包含一些函数

isColumnSelected ( int, const QModelIndex & ) const : bool
isRowSelected ( int, const QModelIndex & ) const : bool
isSelected ( const QModelIndex & ) const : bool
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个