精华内容
下载资源
问答
  • QTableView

    2018-02-26 17:06:24
    QTableView资料1、QTableView表格视图控件的使用方法2、Qt自定义委托在QTableView中绘制控件、图片、文字3、【整理】PyQt如何修改QTableView中表格颜色即如何修改QModelIndex颜色...
    展开全文
  • QTableview

    2014-11-20 00:13:47
    Qt QTableview的用法详解 2012年05月10日 ⁄ 综合⁄ 共 8933字 ⁄ 字号 小 中 大 ⁄ 评论关闭 一. 对QTableWidget本身的效果实现 1. 将表格变为禁止编辑   在默认情况下,表格里的字符是可以更改的,比如双击...

    Qt QTableview的用法详解

    2012年05月10日 ⁄ 综合⁄ 共 8933字 ⁄ 字号 小 中 大 ⁄ 评论关闭

    一. 对QTableWidget本身的效果实现

    1. 将表格变为禁止编辑
     
    在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:
     
    tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
     
    QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个,都是触发修改单元格内容的条件:
     
    QAbstractItemView.NoEditTriggers
    0
    No editing possible. 不能对表格内容进行修改
     
    QAbstractItemView.CurrentChanged
    1
    Editing start whenever current item changes.任何时候都能对单元格修改
     
    QAbstractItemView.DoubleClicked
    2
    Editing starts when an item is double clicked.双击单元格
     
    QAbstractItemView.SelectedClicked
    4
    Editing starts when clicking on an already selected item.单击已选中的内容
     
    QAbstractItemView.EditKeyPressed
    8
    Editing starts when the platform edit key has been pressed over an item.
     
    QAbstractItemView.AnyKeyPressed
    16
    Editing starts when any key is pressed over an item.按下任意键就能修改
     
    QAbstractItemView.AllEditTriggers
    31
    Editing starts for all above actions.以上条件全包括
     
    2. 设置表格为整行选择

    tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式
     
    QAbstractItemView.SelectionBehavior枚举还有如下类型
     
    Constant
    Value
    Description
     
    QAbstractItemView.SelectItems
    0
    Selecting single items.选中单个单元格
     
    QAbstractItemView.SelectRows
    1
    Selecting only rows.选中一行
     
    QAbstractItemView.SelectColumns
    2
    Selecting only columns.选中一列
     
    3.单个选中和多个选中的设置:
     
    tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
     
    该函数的参数还可以是:
     
    QAbstractItemView.NoSelection 不能选择
     
    QAbstractItemView.SingleSelection 选中单个目标
     
    QAbstractItemView.MultiSelection 选中多个目标
     
    QAbstractItemView.ExtendedSelection QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选
     
    4. 表格表头的显示与隐藏
     
    对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
     view plain
     tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
    tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头

    注意:需要 #include <QHeaderView>
     
    5. 对表头文字的字体、颜色进行设置
    view plain
     QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象
     columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体
    columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
    columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色

    注意:需要 #include <QHeaderView>
     
    6. 在单元格里加入控件:
     
    QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中。比如,把一个下拉框加入单元格,可以这么做:
     view plain
     QComboBox *comBox = new QComboBox();
    comBox->addItem("Y");
    comBox->addItem("N");
    tableWidget->setCellWidget(0,2,comBox);

    二. 对单元格的进行设置

    1. 单元格设置字体颜色和背景颜色 及字体字符
     view plain
     QTableWidgetItem *item = new QTableWidgetItem("Apple");
    item->setBackgroundColor(QColor(0,60,10));
    item->setTextColor(QColor(200,111,100));
    item->setFont(QFont("Helvetica"));
    tableWidget->setItem(0,3,item);

    另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget->setFont(QFont("Helvetica"));
     
    2. 设置单元格内文字的对齐方式
     
    这个比较简单,使用newItem.setTextAlignment()函数即可,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右还是自右向左。
     
    水平对齐方式有:
     Constant Value Description
     Qt.AlignLeft 0x0001 Aligns with the left edge.
     Qt.AlignRight 0x0002 Aligns with the right edge.
     Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
     Qt.AlignJustify 0x0008 Justifies the text in the available space.
     
    垂直对齐方式:
     Constant Value Description
     Qt.AlignTop 0x0020 Aligns with the top.
     Qt.AlignBottom 0x0040 Aligns with the bottom.
     Qt.AlignVCenter 0x0080 Centers vertically in the available space.
     
    如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可

    3. 合并单元格效果的实现:
     
    tableWidget->setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的 1行数 2列数 要合并的 3行数 4列数
     
    4. 设置单元格的大小
     
    首先,可以指定某个行或者列的大小
     view plain
     tableWidget->setColumnWidth(3,200);
    tableWidget->setRowHeight(3,60);

    还可以将行和列的大小设为与内容相匹配
     view plain
     tableWidget->resizeColumnsToContents();
    tableWidget->resizeRowsToContents();

    5. 获得单击单元格的内容

    通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
     
    connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );
     
    //将itemClicked信号与函数getItem绑定
     

     

    1.QTableWidget不能在mainwindow中随主窗口的大小变化?
     
      解决:在表格外部添加布局。
     
      代码:tableWidget = new QTableWidget;
     
             tableWidget ->setObjectName(QString::fromUtf8("tableWidget"));
     
             QVBoxLayout *verticalLayout;
     
             verticalLayout->addWidget(tableWidget );
     
    2.将表格变为禁止编辑:
     
      tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
     
      (参数含义:QAbstractItemView.NoEditTriggers--不能对表格内容进行修改
     
                  QAbstractItemView.CurrentChanged--任何时候都能对单元格修改
     
                  QAbstractItemView.DoubleClicked--双击单元格
     
                  QAbstractItemView.SelectedClicked--单击已选中的内容
     
                  QAbstractItemView.EditKeyPressed--
     
                  QAbstractItemView.AnyKeyPressed--按下任意键就能修改
     
                  QAbstractItemView.AllEditTriggers--以上条件全包括)
     
    3.设置表格为整行选择
     
      tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);  //整行选中的方式
     
      (参数含义:AbstractItemView.SelectItems--选中单个单元格
     
                  QAbstractItemView.SelectRows--选中一行
     
                  QAbstractItemView.SelectColumns--选中一列)
     
    4.单个选中和多个选中的设置:
     
      tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);  //设置为可以选中多个目标
     
     (参数含义:QAbstractItemView.NoSelection--不能选择
     
                 QAbstractItemView.SingleSelection--选中单个目标
     
                 QAbstractItemView.MultiSelection--选中多个目标
     
      QAbstractItemView.ExtendedSelection/QAbstractItemView.ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选)
     
    5.表格表头的显示与隐藏
     
      对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
     
      tableWidget->verticalHeader()->setVisible(false);   //隐藏列表头 
     
      tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头 
     
      注意:需要 #include <QHeaderView>
     
    6.对表头文字的字体、颜色进行设置
     
      QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象 
     
      columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体 
     
      columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色 
     
      columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色
     
      注意:需要 #include <QHeaderView>
     
    7.在单元格里加入控件:
     
       QComboBox *comBox = new QComboBox();
     
       comBox->addItem("Y");
     
       comBox->addItem("N");
     
       tableWidget->setCellWidget(0,2,comBox);
     
    8.单元格中添加图片:
     
      tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"),tr("")));
     
    9设置单元格字体颜色、背景颜色和字体字符:
     
      QTableWidgetItem *item = new QTableWidgetItem("Apple");
     
      item->setBackgroundColor(QColor(0,60,10));
     
      item->setTextColor(QColor(200,111,100));
     
      item->setFont(QFont("Helvetica"));
     
      tableWidget->setItem(0,3,item);
     
      另:如果需要对所有的单元格都使用这种字体,则可以使用  tableWidget->setFont(QFont("Helvetica"));
     
    10.设置单元格内文字的对齐方式
     
     水平对齐方式有:
     
     Constant Value Description
     
     Qt.AlignLeft 0x0001 Aligns with the left edge.
     
     Qt.AlignRight 0x0002 Aligns with the right edge.
     
     Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
     
     Qt.AlignJustify 0x0008 Justifies the text in the available space.
     
     垂直对齐方式:
     
     Constant Value Description
     
     Qt.AlignTop 0x0020 Aligns with the top.
     
     Qt.AlignBottom 0x0040 Aligns with the bottom.
     
     Qt.AlignVCenter 0x0080 Centers vertically in the available space.
     
     如果两种都要设置,只要用 Qt.AlignHCenter |  Qt.AlignVCenter 的方式即可
     
    11.合并单元格:
     
      tableWidget->setSpan(0, 0, 3, 1)  # 其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数
     
    12.设置单元格的大小
     
      首先,可以指定某个行或者列的大小
     
       tableWidget->setColumnWidth(3,200);
     
       tableWidget->setRowHeight(3,60);
     
    还可以将行和列的大小设为与内容相匹配
     
       tableWidget->resizeColumnsToContents();
     
       tableWidget->resizeRowsToContents();
     
    13.获得单击单元格的内容
     
      通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
     
    connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));
     
    //将itemClicked信号与函数getItem绑定
     
    14.QTableWidget要调整表格行宽主要涉及以下函数
     
      tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列完全填充并平分
     
      tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);//行自适应宽度                                                                                                     
     
      tableWidget->resizeColumnsToContents(); //根据内容调整列宽
     
      tableWidget->resizeColumnToContents(int col);//根据内容自动调整给定列宽
     
      tableWidget->horizontalHeader()->setResizeMode//把给定列设置为给定模式
     
      主要模式有Stretch和Fixed
     
    15.添加表头内容:
     
      方法一:
     
      QStringList header;
     
      header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");
     
      方法二:
     
      tableWidget->setHorizontalHeaderLabels(QStringList() << tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5"));
     
    16.清除:
     
      tableWidget->clear();//清除所有可见数据(包括表头),行还在
     
      tableWidget->clearContents();//只清除表中数据,不清除表头内容
     
      tableWidget->setRowCount(0);//连行也清除掉
     
    15.一些零碎的知识点代码:
     
      int row = tableWidget->rowCount();//获取表格中当前总行数
     
      tableWidget->setRowCount(row+1);//添加一行
     
      tableWidget->removeRow(row);//清除已有的行列
     
      Int row1 = tableWidget->currentItem()->row();//当前选中行
     
      bool focus = tableWidget->isItemSelected(tableWidget->currentItem());//判断是否选中一行
     
      QString proName = tableWidget->item(row, col)->text();//获取某一格内容
     
      setShowGrid(true);//显示表格线
     
      verticalHeader()->setVisible(false);//隐藏左边垂直
     
      QHeaderView *headerView = horizontalHeader();
     
      headerView->setMovable(false);//去除表头的移动
     
      headerView->resizeSection(0,284);//设置第一列宽
     
      headerView->resizeSection(1,127);//设置第二列宽
     
      headerView->setResizeMode(QHeaderView::Fixed);//列表不能移动
     
      headerView->setClickable(false);//不响应鼠标单击
     
      setEditTriggers(QTableWidget::NoEditTriggers);//不能编辑
     
      setSelectionBehavior(QTableWidget::SelectRows);//一次选中一行
     
      setSelectionMode(QAbstractItemView::SingleSelection);//只能单选
     
      /*QScrollBar *scrollBar = horizontalScrollBar();
     
      scrollBar->hide();*/
     
      setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
     
      setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动
     
      setAutoScroll(false);//去掉自动滚动
     
    17.排序:
     
     
    tableWidget->sortByColumn(0,Qt::AscendingOrder);//顾名思义,该函数意思是将某列按升序/降序的方式排列

    展开全文
  • qTableview

    2015-06-04 15:41:03
    这个qtcreator5.01创建的工程,主要展示了tableview如何添加项,很简单的一个示例,主要是在网上找了很久自己才做出来的
  • QTableView demo

    2017-08-02 14:38:33
    QTableView小demo
  • QTableView.7z

    2021-07-16 17:12:53
    QTableView.7z
  • QTableView大数据源码

    2018-07-07 14:25:57
    QTableView大数据源码显示,可一次显示超过100万数据而不卡
  • QTableView

    2021-01-27 12:12:03
    在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到QTableView类了,在QTableView中可以使用自定义的数据模型来显示内容,通过setModel来绑定数据源。 QTableWidget继承...

    在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到QTableView类了,在QTableView中可以使用自定义的数据模型来显示内容,通过setModel来绑定数据源。

    QTableWidget继承自QTableView,主要区别是QTableView可以使用自定义的数据模型来显示内容(先通setModel来绑定数据源),而QTableWidget只能使用标准的数据模型,并且其单元格数据是通过QTableWidgetItem对象实现的,通常QTableWidget就能够满足我们的要求

    (1)Methods

    1. __init__(parent: QWidget = None)
    2. clearSpans()
    3. columnAt(int) → int
    4. columnCountChanged(int, int)
    5. columnMoved(int, int, int)
    6. columnResized(int, int, int)
    7. columnSpan(int, int) → int
    8. columnViewportPosition(int) → int
    9. columnWidth(int) → int
    10. currentChanged(QModelIndex, QModelIndex)
    11. gridStyle() → PenStyle
    12. hideColumn(int)
    13. hideRow(int)
    14. horizontalHeader() → QHeaderView
    15. horizontalOffset() → int
    16. horizontalScrollbarAction(int)
    17. indexAt(QPoint) → QModelIndex
    18. isColumnHidden(int) → bool
    19. isCornerButtonEnabled() → bool
    20. isIndexHidden(QModelIndex) → bool
    21. isRowHidden(int) → bool
    22. isSortingEnabled() → bool
    23. moveCursor(CursorAction, Union[KeyboardModifiers, KeyboardModifier]) → QModelIndex
    24. paintEvent(QPaintEvent)
    25. resizeColumnsToContents()
    26. resizeColumnToContents(int)
    27. resizeRowsToContents()
    28. resizeRowToContents(int)
    29. rowAt(int) → int
    30. rowCountChanged(int, int)
    31. rowHeight(int) → int
    32. rowMoved(int, int, int)
    33. rowResized(int, int, int)
    34. rowSpan(int, int) → int
    35. rowViewportPosition(int) → int
    36. scrollContentsBy(int, int)
    37. scrollTo(QModelIndex, hint: ScrollHint = EnsureVisible)
    38. selectColumn(int)
    39. selectedIndexes() → List[QModelIndex]
    40. selectionChanged(QItemSelection, QItemSelection)
    41. selectRow(int)
    42. setColumnHidden(int, bool)
    43. setColumnWidth(int, int)
    44. setCornerButtonEnabled(bool)
    45. setGridStyle(PenStyle)
    46. setHorizontalHeader(QHeaderView)
    47. setModel(QAbstractItemModel)
    48. setRootIndex(QModelIndex)
    49. setRowHeight(int, int)
    50. setRowHidden(int, bool)
    51. setSelection(QRect, Union[SelectionFlags, SelectionFlag])
    52. setSelectionModel(QItemSelectionModel)
    53. setShowGrid(bool)
    54. setSortingEnabled(bool)
    55. setSpan(int, int, int, int)
    56. setVerticalHeader(QHeaderView)
    57. setWordWrap(bool)
    58. showColumn(int)
    59. showGrid() → bool
    60. showRow(int)
    61. sizeHintForColumn(int) → int
    62. sizeHintForRow(int) → int
    63. sortByColumn(int, SortOrder)
    64. timerEvent(QTimerEvent)
    65. updateGeometries()
    66. verticalHeader() → QHeaderView
    67. verticalOffset() → int
    68. verticalScrollbarAction(int)
    69. viewOptions() → QStyleOptionViewItem
    70. viewportSizeHint() → QSize
    71. visualRect(QModelIndex) → QRect
    72. visualRegionForSelection(QItemSelection) → QRegion
    73. wordWrap() → bool
    展开全文
  • QTableView+QComboBox简单使用。采用Qt代理的方式,用QComboBox做了指定列的代理。 功能: 1. 采用QComboBox作为QtableView某一列的代理 2. 可添加QtableView的项; 3. 可删除QtableView的项;
  • Qt QTableView

    千次阅读 2017-12-08 17:07:31
    表格数据基本需要用到QTableView 进行表示, 记录下QTableView 的使用方法和遇到的问题 创建QTableView QTableView* table = new QTableView(); // 设置表格属性 table->setEditTriggers(QAbstractItemView::...

    表格数据基本需要用到QTableView 进行表示, 记录下QTableView 的使用方法和遇到的问题

    创建QTableView

    QTableView* table = new QTableView();    //

    设置表格属性

    table->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置表格只读,不能进行编辑

    table->setShowGrid(false);   //不显示网格线

    table->verticalHeader()->hide();  //隐藏行表头 或 table->vercalHeader()->setVisible(false);


    table->verricalHeader()->setDefaultSeciontSize(22);  //设置默认行高

    table->horizontalHeader()->setDefaultSecionSize(100);  //设置默认列宽


    #注意设置表头时需要用到头文件 #include <QHeaderView>

    table->setSelectionBehavior(QAbstractItemView::SelectRows);  //设置选中时为整行选中



    table->setColumnWidth(0, 100);  #设置各列宽度,注意该设置函数必须在数据模型创建并绑定之后调用才起效, 刚开始在setModel 之前调用了该函数始终没有生效

    table->setColumnWidth(1, 100);

    table->setColumnsWidth();    //设置所有列宽


    table->resizeRowToContents(int n);   //根据内容调整某行的行高

    table->resizeColumnsToContents();  //根据内容自动调整所有列的列宽


    创建数据模型

    QStandardItemModel* dataModel = new QStandardItemModel();
    
    table->setModel(dataModel);  //绑定数据模型
    
    //设置列表头
    
    dataModel->setHeaderData(0, Qt::Horizontal, tr("列1"));
    
    dataModel->setHeaderData(1, Qt::Horizontal, tr("列2"));
    
    //添加设置数据
    
    dataModel->setItem(0, 0, new QStandardItem("data1"));
    dataModel->setItem(0, 0, new QStandardItem("data2"));
    
    //设置数据条目显示样式
    
    dataModel->item(0, 0)->setTextAlignment(Qt::AlignCenter);  //设置数据居中显示
    
    
    dataModel->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0))); //设置数据显示颜色
    
    dataModel->item(0, 0)->setFont(Font("Microsoft YaHei", 15, 75)); //设置数据显示字体
    
    //设置表头显示样式
    dataModel->horizontalHeaderItem(0)->setFont(QFont("Helvetica", 10, 50));
    dataModel->horizontalHeaderItem(0)->setBackgroundColor(QColor("0,0, 0")); //设置单元格背景颜色
    dataModel->horizontalHeaderItem(0)->setTextColor(QColor("100, 100, 100")); //设置字体颜色
    
    
    dataModel->sort();  //数据排序
    
    单元格加入控件, 比如加一个下拉框到单元格
    QComBox *box = new QComBox();
    box->addItem("Y");
    box->addItem("N");
    dataModel->addCellWidget(0,0, box);  增加控件到单元格
    
    //添加一行多列数据
     QStandardItem* item1 = new QStandardItem;  //标准项, 用来保存一个数据项
     item1->setData(messageTime, 0);
     QStandardItem* item2 = new QStandardItem;
     item2->setData(message, 0);
     QList<QStandardItem *> row;
     row.append(item1);
     row.append(item2);
    dataModel->appendRow(row);


     

    展开全文
  • QTableView使用

    千次阅读 2019-02-10 01:17:10
    ​ 表格视图控件QTableView,需要和QStandardItemModel, 配套使用,这套框架是基于MVC设计模式设计的,M(Model)是QStandardItemModel数据模型,不能单独显示出来。V(view)是指QTableView视图,要来显示数据模型,C...
  • qt model QtableView

    2014-03-18 23:33:47
    qt model和QtableView的使用
  • QTableView插入各种按钮

    2017-07-28 09:13:26
    QTableView插入各种按钮,很好用
  • 主要介绍了Qt GUI图形图像开发之Qt表格控件QTableView简单使用方法,需要的朋友可以参考下
  • QtableView使用

    2019-04-11 15:55:35
    QtableView中可以使用自定义的数据模型来显示内容,通过 setModel来绑定数据源。 import sys from PyQt5.QtWidgets import QApplication, QMainWindow from Ui_tblView import * from PyQt5.QtWidgets import *...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,875
精华内容 2,350
关键字:

qtableview