QT5中 怎么样实现tableview中鼠标选中行 数据库内容的增删改 求代码

QT5中 怎么样实现tableview中鼠标选中行 数据库内容的增删改 求代码,第1张

刚好我也在弄tableview ^_^,我就分享一下我的做法吧

删除选中行

int row = tableView->currentIndex ()row ();

model->removeRow(row);

增加行

    int row = model->rowCount();  //获得表的行数

  model->insertRow(row);        //添加一行

数据的修改就直接在tableview中修改让后

model->submitAll();

提交就可以实现修改了,当然前提是你的tableview是设置成手动提交的

model->setEditStrategy(QSqlTableModel::OnManualSubmit);

每一列都是一个TableColumn,我们可以直接创建也可以在JavaFX Scene Builder中创建好。 TableView的数据填充,需要一个ObservableList。其中需要一个类来做数据填充。

重载QTableView从QAbstractItemView继承来的静态函数就kyle

按你的要去i,下面2个都可以

void activated ( const QModelIndex & index )

void clicked ( const QModelIndex & index )

先看以下的效果图

- (void)tableView:(UITableView)tableViewwillDisplayCell:(UITableViewCell)cellforRowAtIndexPath:(NSIndexPath)indexPath {

    // 圆角角度

      CGFloatradius =10f;

      // 设置cell 背景色为透明

      cellbackgroundColor = UIColorclearColor;

      // 创建两个layer

      CAShapeLayernormalLayer = [[CAShapeLayeralloc]init];

      CAShapeLayerselectLayer = [[CAShapeLayeralloc]init];

      // 获取显示区域大小

      CGRectbounds =CGRectInset(cellbounds,10,0);

      // 获取每组行数

      NSIntegerrowNum = [tableViewnumberOfRowsInSection:indexPathsection];

      // 贝塞尔曲线

      UIBezierPathbezierPath =nil;

    //考虑一行和多行的情况,若行数为1,则这个cell的每个角都是圆角,否则第一行的左上和右上为圆角,最后一行的左下和右下为圆角

    if(rowNum ==1) {

        // 一组只有一行(四个角全部为圆角)

        bezierPath = [UIBezierPathbezierPathWithRoundedRect:bounds

                                           byRoundingCorners:UIRectCornerAllCorners

                                                 cornerRadii:CGSizeMake(radius, radius)];

    }else{

        if(indexPathrow==0) {

            // 每组第一行(添加左上和右上的圆角)

            bezierPath = [UIBezierPathbezierPathWithRoundedRect:bounds

                                               byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)

                                                     cornerRadii:CGSizeMake(radius, radius)];

        }else if(indexPathrow== rowNum -1) {

            // 每组最后一行(添加左下和右下的圆角)

            bezierPath = [UIBezierPathbezierPathWithRoundedRect:bounds

                                               byRoundingCorners:(UIRectCornerBottomLeft|UIRectCornerBottomRight)

                                                     cornerRadii:CGSizeMake(radius, radius)];

        }else{

            // 每组不是首位的行不设置圆角

            bezierPath = [UIBezierPathbezierPathWithRect:bounds];

        }

    }

    //将贝塞尔曲线的路径赋值给图层,并将图层添加到view

    // 把已经绘制好的贝塞尔曲线路径赋值给图层,然后图层根据path进行图像渲染render

    normalLayerpath= bezierPathCGPath;

    selectLayerpath= bezierPathCGPath;

    UIViewnomarBgView = [[UIViewalloc]initWithFrame:bounds];

    // 设置填充颜色

    normalLayerfillColor = [UIColor colorWithWhite:095 alpha:10]CGColor;

    // 添加图层到nomarBgView中

    [nomarBgViewlayerinsertSublayer:normalLayeratIndex:0];

    nomarBgViewbackgroundColor = UIColorclearColor;

    cellbackgroundView= nomarBgView;

    //圆角显示就完成了,但是如果没有取消cell的点击效果,会出现一个灰色的长方形的形状,再用上面创建的selectLayer给cell添加一个selectedBackgroundView

    UIViewselectBgView = [[UIViewalloc]initWithFrame:bounds];

    selectLayerfillColor = [UIColor colorWithWhite:095 alpha:10]CGColor;

    [selectBgViewlayerinsertSublayer:selectLayeratIndex:0];

    selectBgViewbackgroundColor = UIColorclearColor;

    cellselectedBackgroundView= selectBgView;

}

 func tableView(_tableView:UITableView, willDisplay cell:UITableViewCell, forRowAt indexPath:IndexPath) {

        // 圆角角度

        let radius =calculate(w:350)

        // 设置cell 背景色为透明

        cellbackgroundColor = UIColorclear

        // 创建两个layer

        let normalLayer =CAShapeLayer()

        let selectLayer =CAShapeLayer()

        // 获取显示区域大小

        let bounds = cellboundsinsetBy(dx:100, dy:0)

        // 获取每组行数

        let rowNum = tableViewnumberOfRows(inSection: indexPathsection)

        // 贝塞尔曲线

        var bezierPath:UIBezierPath

        if(rowNum==1) {

            // 一组只有一行(四个角全部为圆角)

            bezierPath =UIBezierPath(roundedRect: bounds, byRoundingCorners: allCorners, cornerRadii:CGSize(width: radius, height: radius))

        }else{

            if(indexPathrow==0) {

                // 每组第一行(添加左上和右上的圆角)

                bezierPath =UIBezierPath(roundedRect: bounds, byRoundingCorners: [UIRectCornertopLeft,UIRectCornertopRight], cornerRadii:CGSize(width: radius, height: radius))

            }elseif(indexPathrow==rowNum-1) {

                // 每组最后一行(添加左下和右下的圆角)

                bezierPath =UIBezierPath(roundedRect: bounds, byRoundingCorners: [UIRectCornerbottomLeft,UIRectCornerbottomRight], cornerRadii:CGSize(width: radius, height: radius))

            }else{

                // 每组不是首位的行不设置圆角

                bezierPath =UIBezierPath(rect: bounds)

            }

        }

        // 把已经绘制好的贝塞尔曲线路径赋值给图层,然后图层根据path进行图像渲染render

        normalLayerpath= bezierPathcgPath;

        selectLayerpath= bezierPathcgPath;

        let nomarBgView =UIView(frame: bounds);

        // 设置填充颜色

        normalLayerfillColor=UIColorwhitecgColor

        // 添加图层到nomarBgView中

        nomarBgViewlayerinsertSublayer(normalLayer, at:0)

        nomarBgViewbackgroundColor=UIColorclear

        cellbackgroundView= nomarBgView

        let selectBgView =UIView(frame: bounds)

        selectLayerfillColor=  UIColorwhitecgColor

        selectBgViewlayerinsertSublayer(selectLayer, at:0)

        selectBgViewbackgroundColor=UIColorclear

        cellselectedBackgroundView= selectBgView

    }

以上就是关于QT5中 怎么样实现tableview中鼠标选中行 数据库内容的增删改 求代码全部的内容,包括:QT5中 怎么样实现tableview中鼠标选中行 数据库内容的增删改 求代码、javafx8 里的tableview对象,怎样在点击某一行时,获取到该行的所有tablecell对象、Linux QT 中控件QTableView相应鼠标事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9713746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存