• QT控件----tableWidget的常规使用


    一、前言:
    正常开发GUI会用到的一个控件就是列表,这里介绍的就是QT其中一个列表控件:tableWidget。
    需要实现功能:表头设置、内容显示、新增行数据、删除行数据及一些属性的配置。
    二、tableWidget属性:

    1、QHeaderView::QHeaderView(Qt::Orientation orientation,QWidget * parent = 0) 使用给定的方向和父对象,创建。
    2、QHeaderView::~QHeaderView()析构函数
    3int QHeaderView::count() const 返回有多少个区域(几列或几行)
    4void QHeaderView::currentChanged(constQModelIndex & current, constQModelIndex & old)QAbstractItemView::currentChanged()的重新实现
    5bool QHeaderView::event(QEvent * e)QObject::event()的重新实现。
    6void QHeaderView::geometriesChanged()  [signal]几何数据改变时,发射该信号
    7void QHeaderView::headerDataChanged(Qt::Orientation orientation,int logicalFirst, int logicalLast)在给定方向上,从逻辑logicalFirst到逻辑logicalLast更新。
    8int QHeaderView::hiddenSectionCount() const返回隐藏的区域数量。
    9void QHeaderView::hideSection(int logicalIndex) 隐藏指定的区域
    10int QHeaderView::horizontalOffset() const返回水平偏移量,如果是垂直头则返回011void QHeaderView::initStyleOption(QStyleOptionHeader * option) const通过指定的选项option初始化本表头。可以用该方法去设置子类表头,不需要重新绘制表头。
    12bool QHeaderView::isClickable() const 表头是否可点击。可点击时,点击会排序。
    13bool QHeaderView::isMovable() const表头是否可移动。
    14bool QHeaderView::isSectionHidden(int logicalIndex) const该区域是否隐藏。
    15int QHeaderView::length() const 返回标题方向的长度
    16int QHeaderView::logicalIndex(int visualIndex) const 返回可见字段的逻辑字段数。
    17int QHeaderView::logicalIndexAt(int position) const 返回指定位置的逻辑字段数。
    18int QHeaderView::logicalIndexAt(int x,int y) const 返回指定位置的逻辑字段数。
    19void QHeaderView::moveSection(int from,int to)将第from移动到第to位置
    20int QHeaderView::offset() const返回偏移量
    21、Qt::Orientation QHeaderView::orientation() const返回是水平表头还是垂直表头
    22void QHeaderView::paintSection(QPainter * painter, constQRect & rect, int logicalIndex) const使用给定painter和rect去绘制指定的字段
    23、ResizeMode QHeaderView::resizeMode(int logicalIndex) const返回指定逻辑字段的大小调整模式
    24void QHeaderView::resizeSection(int logicalIndex,int size) 调整指定逻辑字段的大小
    25void QHeaderView::resizeSections(QHeaderView::ResizeMode mode)重新设置大小调整模式。
    26bool QHeaderView::restoreState(constQByteArray & state)回复指定的状态state,成功返回真,失败返回假
    27、QByteArray QHeaderView::saveState() const保存表头状态,用来去回复。
    28void QHeaderView::sectionAutoResize(int logicalIndex,QHeaderView::ResizeMode mode)[signal] 当一个字段大小改变时,发送该信号。
    29void QHeaderView::sectionClicked(int logicalIndex)[signal]当字段被点击是,发送该信号
    30void QHeaderView::sectionCountChanged(int oldCount,int newCount)[signal]当区字段量变化时(添加或删除),发送该信号。
    31void QHeaderView::sectionDoubleClicked(int logicalIndex)[signal]双击字段发送信号
    32void QHeaderView::sectionEntered(int logicalIndex)[signal]鼠标在字段上并且按下左键,发送信号
    33void QHeaderView::sectionHandleDoubleClicked(int logicalIndex)[signal]双击字段发送信号
    34void QHeaderView::sectionMoved(int logicalIndex,int oldVisualIndex, int newVisualIndex)[signal]字段移动时 ,发送信号
    35int QHeaderView::sectionPosition(int logicalIndex) const返回逻辑字段的所在相对于开头的位置,如果逻辑字段隐藏了,返回-1。如果为水平表头,返回相对的x坐标,如果为垂直表头,返回相对的y坐标。
    36void QHeaderView::sectionPressed(int logicalIndex)[signal]当字段被按下,发送信号
    37void QHeaderView::sectionResized(int logicalIndex,int oldSize, int newSize)[signal]当字段大小改变时,发送信号
    38int QHeaderView::sectionSize(int logicalIndex) const返回逻辑字段的大小
    39、QSize QHeaderView::sectionSizeFromContents(int logicalIndex) const返回逻辑字段所在的区域的尺寸。
    40int QHeaderView::sectionSizeHint(int logicalIndex) const返回一个逻辑字段合适的尺寸(推荐值)
    41int QHeaderView::sectionViewportPosition(int logicalIndex) const返回逻辑字段可视位置
    42void QHeaderView::sectionsAboutToBeRemoved(constQModelIndex & parent, int logicalFirst,int logicalLast)[protected slot]当逻辑字段被删除时,调用该槽函数。
    43bool QHeaderView::sectionsHidden() const如果字段被隐藏返回真
    44void QHeaderView::sectionsInserted(constQModelIndex & parent, int logicalFirst,int logicalLast)[protected slot]当插入逻辑字段时,调用该槽函数
    45bool QHeaderView::sectionsMoved() const字段被移动,返回真
    46void QHeaderView::setClickable(bool clickable)设置表头是否能被点击
    47void QHeaderView::setMovable(bool movable)设置表头中字段是否能移动,如果设为假,表头是固定的
    48void QHeaderView::setOffset(int offset)设置表头偏移量
    49void QHeaderView::setOffsetToLastSection()设置偏移量,使最后一个字段可见
    50void QHeaderView::setOffsetToSectionPosition(int visualIndex)设置给定位置的偏移量
    51void QHeaderView::setResizeMode(ResizeMode mode)设置表头大小变化时的约束模式
    52void QHeaderView::setResizeMode(int logicalIndex,ResizeMode mode)设置指定逻辑字段大小变换的约束模式。
    53void QHeaderView::setSectionHidden(int logicalIndex,bool hide)设置指定逻辑字段是否隐藏
    54void QHeaderView::setSelection(constQRect & rect, QItemSelectionModel::SelectionFlags flags)设置规定rect范围内字段以flags标志显示。
    55void QHeaderView::setSortIndicator(int logicalIndex,Qt::SortOrder order)指定字段按照指定方式排序。注意:有的字段不支持排序,可能会混乱。
    56void QHeaderView::showSection(int logicalIndex)显示指定的逻辑字段
    57、QSize QHeaderView::sizeHint() const返回一个推荐值
    58void QHeaderView::sortIndicatorChanged(int logicalIndex,Qt::SortOrder order)[signal]如果指定逻辑字段发生排序,发送该信号
    59、Qt::SortOrder QHeaderView::sortIndicatorOrder() const返回排序方式
    60int QHeaderView::sortIndicatorSection() const返回有排序的字段
    61int QHeaderView::stretchSectionCount() const返回可以伸缩的字段的数量
    62void QHeaderView::swapSections(int first,int second)交换字段
    63int QHeaderView::verticalOffset() const返回垂直表头的偏移,水平表头返回0
    64int QHeaderView::visualIndex(int logicalIndex) const返回给定逻辑字段的可见引索值
    65int QHeaderView::visualIndexAt(int position) const返回指定位置的可见引索。
    

    三、tableWidget初始化:

    	ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);       // 整行选中的方式
    	ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);    // 设置为可以选中单个目标
    	ui.tableWidget->verticalHeader()->setVisible(false);                       // 隐藏行表头  
    	ui.tableWidget->resizeColumnsToContents();                                 // 列宽与内容匹配
    	ui.tableWidget->resizeRowsToContents();                                    // 行高与内容匹配
    	ui.tableWidget->resizeColumnToContents(0);                                 // 自动调整列宽
    	ui.tableWidget->setColumnCount(4);                                         // 设置列数
    	QHeaderView* widthlist = ui.tableWidget->horizontalHeader();               //创建列宽list
    	widthlist->setStyleSheet("QHeaderView::section{border:0px;background-color:#f2f1f7;color:#7f7f7f;}");//设置颜色
    	widthlist->resizeSection(0, 80);									                                  // 设置列宽
    	widthlist->resizeSection(1, 150);
    	widthlist->resizeSection(2, 400);
    	widthlist->setStretchLastSection(true);										                      // 最后一栏自适应宽度
    	QStringList list;                                                        // 创建列表头list
    	list << "NO" << "Time" << "Value" << "Type";
    	ui.tableWidget->setHorizontalHeaderLabels(list);
    	ui.tableWidget->show();
    

    四、添加内容:

    			//===============控件tableWidget操作新增数据===========================
    			int rowcount = ui.tableWidget->rowCount();           //获取当前行数
    			if (rowcount < i+1)                                  //如果添加的数据所在的行数大于实际控件存在的列数,则新增一列
    			{
    				ui.tableWidget->insertRow(rowcount);                 //新增行
    			}
    			ui.tableWidget->setItem(i, NO, new QTableWidgetItem(123456)); //新增行添加数据
    			ui.tableWidget->setItem(i, Time, new QTableWidgetItem(4567));
    			ui.tableWidget->setItem(i, Value, new QTableWidgetItem(443567));
    			ui.tableWidget->setItem(i, Type, new QTableWidgetItem(98665));
    

    五、删除选中行:

    	int rowIndex = ui.tableWidget->currentRow();  //查询选中行
    	if (rowIndex > -1)
    	{
    		ui.tableWidget->removeRow(rowIndex);  //删除选中行
    	}
    

    六、最后一行新增一行数据:

    	int rowcount = ui.tableWidget->rowCount();           //获取当前行数
    	ui.tableWidget->insertRow(rowcount);                 //新增行
    	ui.tableWidget->setItem(rowcount, NO, new QTableWidgetItem(newcount)); //新增行添加数据
    	ui.tableWidget->setItem(rowcount, Time, new QTableWidgetItem(34566));
    	ui.tableWidget->setItem(rowcount, Value, new QTableWidgetItem(54433));
    	ui.tableWidget->setItem(rowcount, Type, new QTableWidgetItem(345666543));
    
  • 相关阅读:
    [整理]修改git 默认编辑器为vim
    [转]如何清空Chrome缓存和Cookie
    [整理]docker内部时区修改的两种方法
    [译]10个有关SCP的命令
    [译]在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?
    通过设计表快速了解sql语句中字段的含义
    [整理]什么是排序算法的稳定性,为什么它很重要?
    pyinstaller打包自己的python程序
    [问题解决]ps aux中command命令相同,如何找出自己要的进程号?
    [常识]Windows系统里休眠和睡眠的区别?
  • 原文地址:https://www.cnblogs.com/LcVong/p/15460105.html
Copyright © 2020-2023  润新知