QT tablewidget设置表头


  • QT QTableWidget 用法总结
    08-18
  • QTableView表头填满控件,表头对齐
    11-09
  • Qt Table 的表头合并
    09-27
  • Qt文档阅读笔记-两视图共享模型实现冻结列效果(frozencolum...
    10-10
  • QT快速设置QTableWidget表头内容
    06-08
  • QTableWidget 使用代理画进度条
    05-08
  • QTableView,支持拖拽列,冻结列,多行表头,绘制表格,复选...
    08-05
  • QTableWidget与QTableView的区别
    12-18
  • 关于QTableWidget 表头设置无效的原因
    02-08
  • QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
    12-18
  • QTableView自适应填充伸展列宽的基础上 再固定特定某列宽
    10-19
  • Qt之QTableWidget详细使用
    04-09
  • table表头冻结
    10-16
  • Qt_QTableWidget点击表头设置排序
    09-23
  • QTableWidget表头样式
    10-27
  • QTreeView使用总结3,表头、行列相关的设置方法
    04-08
  • QTableView 设置列头 setHeaderView()
    09-30
  • QT 修改QTableWidget表头
    03-31
  • Qt5对Excel表格简单、高效处理方法
    10-21
  • Qt QTableWidget的用法
    01-10
  • 一 QT之QTableView用QHeaderView添加横向表头
    10-18
  • Markdown_-_表格
    05-13
  • QTableWidget清空或删除内容及表头样式内容
    02-01
  • 【java基础知识】设置表格内容居中显示,表格字体大小调整,...
    01-23
  • 表头固定内容可滚动表格的3种实现方法
    06-18
  • ASP.NET_如何固定表格表头(fixed_header)
    01-22
  • Qt之多行表头控件
    12-03
  • list 多行表头 表头合并
    10-30
  • 表头固定
    01-05
  • QT_QTableView用法小结(设置单元格字体颜色,文本字体,宽高...
    09-27
  • [推荐]_jQuery_表格插件汇总
    07-12
  • 4、table和表单的学习
    11-23
  • 关于JS在图表控件应用上直接生成表格数据导出到本地
    07-19
  • 提取指定的PDF表格保存到Excel
    09-26
  • 《Qt5+QTableWidget创建表格》
    10-26
  • QT QTableView QTableWidget 复杂表头(多行表头) 、(冻结、固定特定的行)

    版权声明: https://blog.csdn.net/xiezhongyuan07/article/details/82857631

     

    demo下载地址在最后

    ================================分割线======================================

    对于所有前端开发人员会留意到,我们在开发过程中对于表格使用频率还是挺高的,使用QT框架开发时候我们使用QTableView或者QTableWidget创建表格。

    其中表格分为 表格头与表格体:

    QT tablewidget设置表头_第1张图片

    对于简单地表格,我们可以设置表头来满足我们的要求(当然也可以隐藏表头),不过对于定制化的表头,我们能做的不是特别多。特别是对于复杂的表头,使用自带的表头,无论怎么设置都不太可能达到需求。例如我最近接到的一个项目,需求是:

    QT tablewidget设置表头_第2张图片

    我们分析一下这个表格有什么特点:

    1.表头不是简单的一行,而是两行。

    2.表头有单元格的合并。

    3.部分表头中间有使用渐变的分隔线且分割线不是上下充满表格的。

    如果能解决上面三个问题,我们基本都可以把这个表格做出来了。这个表头明显是一个比较复杂的表头。对于只对QT提供的API或者CSS上面三个问题,没有一个能够解决的。

    这时候可能会有老师提出解决办法:给header 设置itemDelegate,自己在itemDelegate中重写paintEvent,自己画表头。 因为我们都知道,自己画单元格,要更灵活,满足更多需求。但是我们平时都是对单元格进行重绘,并不是对header的单元格进行重绘。于是就去搜索QT的帮助文档,惊喜的发现居然有设置itemdelegate的API,心里觉得有戏于是创建 ItemDelegate类,对header进行设置如下

    tableWidget->horizontalHorizon()->setItemDelegate(new ItemDelegate());
       
       
       
       

    可是结果却是令人失望的,没有一点效果。于是反身去查找QT 关于这部分的介绍,终于找到了原因:

    QT tablewidget设置表头_第3张图片

    结果就显而易见了,对于headerView,并不能使用ItemDelegate进行重绘。

    那么我们就要另外想办法了,经过分析,刚开始提出了两种方案:

    解决方案
      描述 优点 缺点
    方案一
    • 隐藏表头
    • 前两行当做表头
    • 内容行从第三行开始
    • 对表格设置itemDelegate,对前两行的表头进行重绘
    • 一个QTableWidget,实现起来方便一些。
    • 当出现滚动条,表头会随着着内容表格个移动,不符合大众习惯。
    • 改变了内容表格的整个原有序列,所有的行数都需要比原来大2,对所有的API进行重写工作难不高,复杂度比较高。
    方案二
    • 使用一个QTableWidget命名为m_frozonTableWgt作为表头。
    • 使用另外一个QTableWidget作为内容显示的表格。
    • m_frozonTableWgt隐藏表头、隐藏滚动条、只显示2行的内容表格、显示到内容表格上方、只占据内容表的表头高度、设置ItemDelegate进行重绘。
    • 内容表格,显示表头,高度设置成m_frozonTableWgt前两行的高度。
    • 最终效果更好,体验更好。
    • 需要对2个QTableWidget进行操作,比较麻烦。
    • 需要对表头的QTableWidget进行锁死(固定)。
    • 3.需要对2个QtableWidget进行联动设置

    总结一下就是:

    • 第一种方案比较简单,但是最终体验效果不太好。
    • 第二种方案实现起来比较复杂,但是最终体验效果比较好。

    本着成就客户与自我成长的态度,最终选择了第二种解决方案。

    我们首先要做的就是创建一个继承于QTableWidget的一个类,命名为TDMSummaryTableWgt。

    class TDMSummaryTableWgt : public QTableWidget
       
       
       
       

    然后需要在TDMSummaryTableWgt类中,声明另外一个用于header的QTableWidget,命名为 m_frozenTableWgt;

    
       
       
       
       
    1. private:
    2. QTableWidget *m_frozenTableWgt; // 使用TableWidget 作为header,并冻结

    这个m_frozenTableWgt,就是作为表头,并且固定位置,不随着滚动条移动位置。

    这个时候我们只需要解决两个问题,就可以搞定表头了:

    一.表头位置锁定(固定、锁死)。

    二.重绘表头。

    对于第一个问题,表头位置的固定。我们应该从哪些方面考虑来解决?

    1.从界面初始化开始,我们应当让表头m_frozenTableWgt具备: 不显示表头,不显示滚动条、设置rowcount为2行并隐藏2行后所有的元素、设置窗口层次在TDMSummaryTableWgt之前、对单元格进行合并等要素。

    这里要特别注意的是,m_frozenTableWgt与TDMSummaryTableWgt设置的列数应该完全一致,每一列的尺寸与伸展方案也应该完全一致。

    
       
       
       
       
    1. void TDMSummaryTableWgt::initFrozenFrame()
    2. {
    3. m_frozenTableWgt = new QTableWidget( this);
    4. m_frozenTableWgt->horizontalHeader()->setVisible( false); //表头不可见
    5. m_frozenTableWgt->verticalHeader()->setVisible( false); //表头不可见
    6. m_frozenTableWgt->setShowGrid( false); //网格线不可见
    7. m_frozenTableWgt->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置单元格不可编辑
    8. m_frozenTableWgt->horizontalHeader()->setStretchLastSection( true); //最后一个单元格扩展
    9. m_frozenTableWgt->setFocusPolicy(Qt::NoFocus); //解决选中虚框问题
    10. m_frozenTableWgt->setFrameShape(QFrame::NoFrame); //去除边框 尴尬
    11. m_frozenTableWgt->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //隐藏滚动条
    12. m_frozenTableWgt->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //
    13. m_frozenTableWgt->setHorizontalScrollMode(ScrollPerPixel);
    14. m_frozenTableWgt->setItemDelegate( new ItemDelegate( 0)); //设置绘画代理(主要在代理中画出来header)
    15. viewport()->stackUnder(m_frozenTableWgt); //设置窗口层次
    16. m_frozenTableWgt->setColumnCount( 10); //header10列
    17. m_frozenTableWgt->setRowCount( 2); //header2行
    18. m_frozenTableWgt->setRowHeight( 0, 42); //第一行设置高度42px
    19. m_frozenTableWgt->setRowHeight( 1, 42); //第二行设置高度42px
    20. for ( int row = 2; row < m_frozenTableWgt->rowCount(); ++row) //隐藏2行后的行
    21. m_frozenTableWgt->setRowHidden(row, true);
    22. //===================设置header内容=================//
    23. //合并单元格
    24. m_frozenTableWgt->setSpan( 0, 0, 2, 1); //老师ID
    25. m_frozenTableWgt->setSpan( 0, 1, 2, 1); //老师姓名
    26. m_frozenTableWgt->setSpan( 0, 2, 2, 1); //老师姓名
    27. m_frozenTableWgt->setSpan( 0, 3, 1, 4); //最新日期(8月20)
    28. m_frozenTableWgt->setSpan( 0, 7, 1, 2); //前一日(8月19)
    29. m_frozenTableWgt->setSpan( 0, 9, 2, 1); //操作
    30. m_frozenTableWgt->setItem( 0, 0, new QTableWidgetItem( "老师ID"));
    31. m_frozenTableWgt->setItem( 0, 1, new QTableWidgetItem( "老师姓名"));
    32. m_frozenTableWgt->setItem( 0, 2, new QTableWidgetItem( "老师姓名"));
    33. m_frozenTableWgt->setItem( 0, 3, new QTableWidgetItem( "8月20日"));
    34. m_frozenTableWgt->setItem( 0, 7, new QTableWidgetItem( "8月19日"));
    35. m_frozenTableWgt->setItem( 0, 9, new QTableWidgetItem( "操作"));
    36. m_frozenTableWgt->setItem( 1, 3, new QTableWidgetItem( "续报率"));
    37. m_frozenTableWgt->setItem( 1, 4, new QTableWidgetItem( "新学员续报率"));
    38. m_frozenTableWgt->setItem( 1, 5, new QTableWidgetItem( "续报增长人数"));
    39. m_frozenTableWgt->setItem( 1, 6, new QTableWidgetItem( "续报增长率"));
    40. m_frozenTableWgt->setItem( 1, 7, new QTableWidgetItem( "续报增长率"));
    41. m_frozenTableWgt->setItem( 1, 8, new QTableWidgetItem( "新学员续报率"));
    42. //连接信号槽。用于滚动条联动
    43. connect(m_frozenTableWgt->verticalScrollBar(), &QAbstractSlider::valueChanged,
    44. verticalScrollBar(), &QAbstractSlider::setValue);
    45. connect(verticalScrollBar(), &QAbstractSlider::valueChanged,
    46. m_frozenTableWgt->verticalScrollBar(), &QAbstractSlider::setValue);
    47. updateFrozenTableGeometry(); //更新位置
    48. m_frozenTableWgt->show();
    49. }

     

    2.除了上面的考虑之外,我们就需要考虑m_frozenTableWgt与TDMSummaryTableWgt之间的联动问题了,主要包括表格的尺寸变化、滚动条移动、界面平移等问题。

    我们首先要写一个方法,来确定m_frozenTableWgt与TDMSummaryTableWgt位置。

    
       
       
       
       
    1. void TDMSummaryTableWgt::updateFrozenTableGeometry()
    2. {
    3. m_frozenTableWgt->setGeometry(frameWidth(),
    4. frameWidth(),
    5. viewport()->width(),
    6. horizontalHeader()->height());
    7. }

    我们需要重写3个上面提到问题解决方案的函数,在每个方法里都要重新执行updateFrozenTableGeometry();

    
       
       
       
       
    1. protected:
    2. /**
    3. * @brief resizeEvent 重载虚函数 resize事件,同时更新m_frozenTableWgt的位置
    4. * @param event
    5. */
    6. virtual void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
    7. /**
    8. * @brief moveCursor 重载虚函数 鼠标移动事件
    9. * @param cursorAction
    10. * @param modifiers
    11. * @return
    12. */
    13. virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) Q_DECL_OVERRIDE;
    14. /**
    15. * @brief scrollTo TableWidget移动事件
    16. * @param index
    17. * @param hint
    18. */
    19. void scrollTo (const QModelIndex & index, ScrollHint hint = EnsureVisible) Q_DECL_OVERRIDE;

    对上面这三个虚函数,我们需要特别注意的重点是moveCursor方法。这个方法里我们应该重点关注鼠标向上移动的情景:只有当鼠标向上移动,并且TDMSummaryTableWgt还未显示到第一行,并且可视区域的顶点应该小于m_frozenTableWgt的第一行,才允许继续向上移动:

    
       
       
       
       
    1. QModelIndex TDMSummaryTableWgt::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
    2. {
    3. QModelIndex current = QTableView::moveCursor(cursorAction, modifiers);
    4. if (cursorAction == MoveUp && current.row() > 0
    5. && visualRect(current).topLeft().y() < m_frozenTableWgt->rowHeight( 1) ){
    6. const int newValue = verticalScrollBar()->value() + visualRect(current).topLeft().y()
    7. - m_frozenTableWgt->rowHeight( 0) - m_frozenTableWgt->rowHeight( 1);
    8. verticalScrollBar()->setValue(newValue);
    9. }
    10. return current;
    11. }

    做完上面这几部,基本解决了第一个问题,就是将m_frozenTableWgt的固定行(冻结)的功能。

    要完成m_frozenTableWgtde 的样式重绘,就是第二个要解决的问题了。

    这个问题,我们要新建一个继承于QStyledItemDelegate的代理类,我们叫ItemDelegate。并且重写paint方法,在paint方法里绘制m_frozenTableWgt;

    m_frozenTableWgt->setItemDelegate(new ItemDelegate(0));//设置绘画代理(主要在代理中画出来header)
       
       
       
       

     

    
       
       
       
       
    1. class ItemDelegate : public QStyledItemDelegate
    2. {
    3. Q_OBJECT
    4. public:
    5. ItemDelegate( int type, QObject *parent= 0);
    6. void paint(QPainter *painter,
    7. const QStyleOptionViewItem &option, const QModelIndex &index) const;
    8. private:
    9. };

    在paint方法中,根据每个单元格的背景不同进行绘制背景

    
       
       
       
       
    1. int rowIndex = index.row(); //行号
    2. int colIndex = index.column(); //列号
    3. if (rowIndex == 0 || rowIndex == 1) //前两行作为header
    4. {
    5. //背景
    6. QColor color;
    7. if (rowIndex == 0 && (colIndex == 0 || //老师ID
    8. colIndex == 1 || //老师姓名
    9. colIndex == 2 || //课程类型
    10. colIndex == 9)) //操作
    11. {
    12. color.setRgb( 231, 238, 251);
    13. }
    14. else if ((rowIndex == 0 && colIndex == 3) || //8月20日
    15. (rowIndex == 1 && (colIndex == 3 || //续报率
    16. colIndex == 4 || //新学员续报率
    17. colIndex == 5 || //续报增长人数
    18. colIndex == 6))) //续报增长率
    19. {
    20. color.setRgb( 214, 228, 253);
    21. }
    22. else if ((rowIndex == 0 && colIndex == 7) || //8月19日
    23. (rowIndex == 1 && (colIndex == 7 || //续报率
    24. colIndex == 8))) //新学员续报率
    25. {
    26. color.setRgb( 203, 221, 255);
    27. }
    28. //绘制背景
    29. painter->setPen(color);
    30. painter->setBrush(QBrush(color));
    31. painter->drawRect(option.rect);

    根据每个单元格要求绘画是否需要右侧的渐变的分隔线。

    
       
       
       
       
    1. //右侧spacer
    2. if ((rowIndex == 0 && (colIndex == 0 || colIndex == 1) )) {
    3. int startX = option.rect.right();
    4. int startY = option.rect.y() + (option.rect.height() - 40) / 2;
    5. int endX = startX;
    6. int endY = startY + 40;
    7. QLinearGradient linearGradient(startX, startY, endX, endY);
    8. linearGradient.setColorAt( 0, QColor( 164, 188, 240, 0));
    9. linearGradient.setColorAt( 0.5, QColor( 164, 188, 240, 255));
    10. linearGradient.setColorAt( 1, QColor( 164, 188, 240, 0));
    11. painter->setBrush(linearGradient);
    12. painter->drawRect(option.rect.right()- 2, startY, 2, 40);
    13. }
    14. else if (rowIndex == 1 && (colIndex == 3 ||
    15. colIndex == 4 ||
    16. colIndex == 5 ||
    17. colIndex == 7 )) {
    18. int startX = option.rect.right();
    19. int startY = option.rect.y() + (option.rect.height() - 28) / 2;
    20. int endX = startX;
    21. int endY = startY + 28;
    22. QLinearGradient linearGradient(startX, startY, endX, endY);
    23. linearGradient.setColorAt( 0, QColor( 164, 188, 240, 0));
    24. linearGradient.setColorAt( 0.5, QColor( 164, 188, 240, 255));
    25. linearGradient.setColorAt( 1, QColor( 164, 188, 240, 0));
    26. painter->setBrush(linearGradient);
    27. painter->drawRect(option.rect.right()- 2, startY, 2, 28);
    28. }

    最后将每个单元格的字体画出来

    
       
       
       
       
    1. //字体
    2. painter->setPen(QColor( 51, 51, 51));
    3. QTextOption op;
    4. op.setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    5. QFont font;
    6. font.setFamily( "Microsoft YaHei");
    7. font.setPixelSize( 14);
    8. font.setBold( true);
    9. painter->setFont(font);
    10. painter->drawText(option.rect, index.data(Qt::DisplayRole).toString(), op);

    这样就解决了header里面的难题。

    QT tablewidget设置表头_第4张图片

     

    =================================分割线========================================

    demo下载地址:https://download.csdn.net/download/xiezhongyuan07/10694125  (没有积分的小伙伴评论上写邮箱,我发给你们)

    =================================分割线========================================

    • 5

    • 48

      条评论

    • 收藏
    • 分享
    • APP打开
    • 下一篇
    
    
    	
    • 上一页
    • 1
    • 2
    • 下一页

    Qt多行表头控件

    12-03 阅读数 305

    文章目录多行表头效果逻辑使用资源 多行表头 Qt不提供默认的多行表头控件, 网上大多也是用2个QTableWidget组合来实现,最近在网上看到一份资源。他的思路是使用Model/View,通过使用重... 博文 来自: w18758879921的博客

    		

    ① QTableView是基于MVC架构,QTableView表格用来做显示,QStandardItemModel用来做数据模…


    博文
    来自: 我欲乘风归去



    		

    区别点

    QTableView

    QTableWi…


    博文
    来自: 郭小郭的专栏



    		
    
    
    
    		
    
    
    
    		
    
    
    
    		
    
    
    
    		

    QTableView
    {
    background-color: rgba(255, 2…


    博文
    来自: neochan1108的专栏



    		
    
    
    
    		

    ui-&gt;tableWidget-&gt;horizontalHeader()-&gt;setMinimumHeight(30);

    ui-&gt;…


    博文
    来自: Qt自定义控件大全+UI定制+输入法



          

    QTableWidget继承自QTableView。QSqlTableModel能与QTableView绑定,但不能于QTableWidget绑…


    博文
    来自: zyc_csdn的博客



    		
    
    
    
    		
    
    

    		
    
    
    
    		

    2014-5-25阅读379 评论0

    各种软件设计中,表格的使用非常频繁,下面介绍的是关于QTableWidget的使用以及常用属…


    博文
    来自: 笨师兄



    		

    ui->tableWidget->item(0,0)->setFlags(Qt::ItemIsEditable);//取消表头的在选中单元格时的高亮状…


    博文
    来自: shengzhe8688的专栏



    		

    ​ 在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问…


    博文
    来自: zyc_csdn的博客



    		

    而且我的界面中很很多个…


    博文



    		
    
    
    
    		

    ui.tableWidget_grid->horizont…


    博文
    来自: 蜗牛的专栏



    		
    
    
    
    		

    {
    m_pNodeTable = new QTableWidget(this);
    QStringList hea…


    博文
    来自: 笑秋水



    		
    
    

    		
    
    
    
    		

    第一种是QListWidgetItem *takeItem(int row);使用…


    博文
    来自: GreenArrowMan-CSDN博客



    		
    
    
    
    		

    verticalHeader()->hide();
    行标题的设置
    QTableWidgetItem …


    博文
    来自: mmdaphne的专栏



    		
    
    

    		
    
    
    
    		

    list_widget->setFixed…


    博文
    来自: Code搬运工



    		

    #include
    #include
    #include class CCheckBoxHeaderView : public QHeade…


    博文
    来自: 阳光柠檬_的技术笔记



    		

    //喜欢

    resizeColumnToContents(SEQ_FAVOURITE);



    博文
    来自: DLove0502的专栏



    		

    tableWidget = new QTableWidget(this);
    tableWidget->setRowCount(10);
    tableW…


    博文
    来自: fanyun的博客



    		

    table->horizontalHeader()->hide();//顶上的标题隐藏

    tablewidg…


    博文
    来自: HSL、部落



    		

    FriendTable->setFrameShape(QFrame::NoFrame);  //设置边框
    FriendTable->setHorizontalHeaderLabels…


    博文
    来自: leo115的专栏



    		
    
    
    
    		
    
    
    
    			
    
    

    媒体大神和科技大佬的团聚,你来吗?

    年青人因科技而团聚,4月28日,我们在杭州云栖小镇2050大会等你

    QT tablewidget设置表头_第5张图片
    		

    基本外观设置
    FriendTab…


    博文
    来自: u014430031的博客



    		
    
    
    
    			
    
    
    
    		
    
    
    
    		

    表格类是Qt中常用的控件,如QTableWidget,QTableView。QTableWidget是QTableView的子类,主要区别是QTableView可以使用自定义的数据模型来显示…


    博文
    来自: hebbely的博客



    		

    1、拖拽表列
    2、冻结表列
    3、多行表头
    4、绘制表格包含功能(绘制复选框 、绘制按钮,点击响应  、支持字体指定颜色的设置 、绘制表头,支持排序、全选

    绘制…


    博文
    来自: u012765446的专栏



    			
    
    
    
    		
    
    
    
    		

            void TradeTableView::InitView()
            {

                //设置列头
                QHe…


    博文
    来自: 证券指标的专栏



    		

    1) 若是在表头不增加任何控…


    博文
    来自: CoolCode



    		
    
    
    
    		

    我们希望左上角的区域也是和表头的颜色一致,可以设置此处样式:/QTableView 左上角样式/
    QTableVie…


    博文
    来自: David



    		
    
    
    
    		

        在ArcGIS Online当中如何构架自己的应用程序模板,我们得先要了…


    博文
    来自: ArcGIS产品与技术专栏



    		

    这里我下载安装的是jdk-7u51-windows-i586,如果你没有请到Oracle官网下载;
    【我的电脑】-【高级系统设置】-【环境变量】-系统变量中的Path添加…


    博文
    来自: hankaibo



    		

     http://www.pythonware.com/products/pil/

     

    2.解压后,进入到目录下

    cd /Users/jianan/Dow…


    博文
    来自: 专注于cocos+unity+服务器全栈



    		

    因为需要用,所以才翻译了这个文档。但总归赖于英语水平很有限,翻译出来的中文有可能…


    博文
    来自: ymj7150697的专栏



    		
    
    
    
    		

    请看一下这个类都有哪些功能:
      …


    博文
    来自: 李坤 大米时代 第五期



    		
    
    
    
    		

    DirectX修复工具最新版:DirectX Repair V3.8 增强版  NEW!

    版本号:V3.8.0.11638

    大小: 107MB/7z格式压缩,18…


    博文
    来自: VBcom的专栏



    		

    相关函数 open,fclose
    表头文件 #include
    定义函数 FILE * fopen(const char * path,const char * mode)…


    博文
    来自: 独旅天涯



    		

          最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这…


    博文
    来自: Mr_Alex



    		
    
    
    
    		

    Git(the stupid content tracker)是一个源自Linux内核项目的源码管理工具。和传统的CVS、SVN不同,git是一个分布式源码管理工具。

    Git命令…


    博文
    来自: No talent but persistence



    		

    CommonFunc.caculate={



    博文
    来自: 夕颜的专栏



    		

    你可能感兴趣的:(Qt)