QT QTableWidget 表格 学习笔记

首先  了解一下QTableWidget 控件的属性

成员方法功能
setText(const QString &text)设置单元格中的文本。
setlcon(const Qlcon &icon)给单元格添加图标。
setBackground(const QBrush &brush)设置单元格的背景。
setFont(const QFont &font)设置单元格中文本的字体。
setForeground(const QBrush &brush)设置单元格中字体的颜色。
setTextAlignment(int alignment)设置单元格中文本的对齐方式。
setToolTip(const QString &toolTip)给单元格设置提示信息。

他的一些函数

成员方法功能
setRowCount(int rows)设置表格的行数。
setColumnCount(int columns)设置表格的列数。
setRowHeight(int row, int height)设置指定行的行高。
setColumnWidth(int column, int width)设置指定列的宽度。
setCellWidget(int row, int column,Widget *widget)向表格中的指定位置添加 widget控件。通过调用cellWidget(int row, int column)方法,可以获取指定位置出的控件。
setHorizontalHeaderLabels(consStringtList &labels)设置表格的水平表头。
setVerticalHeaderLabels(constQStringList &labels)设置表格的竖直表头。
setltem(int row, int column,QTableWVidgetltem *item)向表格指定位置添加单元格。。获取指定位置的单元格,可以借助 item(int row, int column)或者itemAt(int ax, int ay)方法。
setEditTriggers(EditTriggers triggers)当triggers参数值为QAbstractltemView::NoEditTriggers时,表示禁止用户编辑单元格。
resize(int w, int h)设置表格的尺寸。
setFont(const QFont &)设置表格数据区中文本的字体和大小。

他的信号和槽

信号函数功能
cellClicked(int row,int column)当某个单元格被点击时,触发该信号,row和columu就是被点击的单元格的位置。
cellDoubleClicked(int row,int column)当某个单元格被双击时,触发该信号,row和columu就是被点击的单元格的位置。
cellEntered(int row,int column)当某个单元格被按下时,触发该信号,row和columu就是被点击的单元格的位置。
cellChanged(int row, int column)当某个单元格中的数据发生改变时,触发该信号,row和columu就是被改变的单元格的位置。
itemClicked(QTableWidgetltem *item)19-当某个单元格被点击时,触发该信号,item就是被点击的单元格。
itemDoubleClicked(QTableWVidgetltem *item)当某个单元格被双击时,触发该信号,item就是被双击的单元格。
itemEntered(QTableWVidgetltem *item)当某个单元格被按下时,触发该信号,item就是被按下的单元格。
itemChanged(QTableWidgetltem *item)当某个单元格中的数据发生改变时,触发该信号,item就是被改变的单元格。
槽函数功能
clear()删除表格中所有单元格的内容,包括表头。
clearContents()不删除表头,仅删除表格中数据区内所有单元格的内容,
insertColumn(int column)在表格第column列的位置插入一个空列。
insertRow(int row)在表格第row行的位置插入一个空行。
removeColumn(int column)删除表格中的第column列,该列的所有单元也会一并删除。
removeRow(int row)删除表格中的第row行,该行的所有单元格也会一并删除。
scrollToltem(const QTableWidgetltem*item, QAbstractltemView::ScrollHint hint= EnsureVisible)滑动到指定单元格

这里离我们创建了一个3x3的表格

 QTableWidget tw(3,3,&w);
    tw.resize(500,500);
    tw.setItem(0,0,new QTableWidgetItem("阿里"));
    tw.setItem(0,1,new QTableWidgetItem("www.1688.com"));
    tw.setItem(0,2,new QTableWidgetItem("马云"));

    tw.setItem(1,0,new QTableWidgetItem("腾讯"));
    tw.setItem(1,1,new QTableWidgetItem("www.qq.com"));
    tw.setItem(1,2,new QTableWidgetItem("马化腾"));


    tw.setItem(2,0,new QTableWidgetItem("百度"));
    tw.setItem(2,1,new QTableWidgetItem("www.baidu.com"));
    tw.setItem(2,2,new QTableWidgetItem("李彦宏"));
 

然后我们实现了一个双击某一行  删除该行

 QObject::connect(&tw,&QTableWidget::cellDoubleClicked,&tw,&QTableWidget::removeRow);

扩容一行

int rows=tw.rowCount();
    tw.setRowCount(rows+1);

完整代码如下

 

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"

#include <QApplication>
#include <QStringList>
#include <QListWidget>
#include <QTableWidget>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;

//    QListWidget qlst(&w);
//    qlst.addItem("百度");
    QListWidgetItem s("阿里");
    qlst.addItem(&s);
//    qlst.addItem(new QListWidgetItem("阿里"));
//    QStringList qs;
//    qs<<"腾讯"<<"字节";


//    qlst.addItems(qs);
//    QObject::connect(&qlst,&QListWidget::itemDoubleClicked,&qlst,&QListWidget::clear);

    QTableWidget tw(3,3,&w);
    tw.resize(500,500);
    tw.setItem(0,0,new QTableWidgetItem("阿里"));
    tw.setItem(0,1,new QTableWidgetItem("www.1688.com"));
    tw.setItem(0,2,new QTableWidgetItem("马云"));

    tw.setItem(1,0,new QTableWidgetItem("腾讯"));
    tw.setItem(1,1,new QTableWidgetItem("www.qq.com"));
    tw.setItem(1,2,new QTableWidgetItem("马化腾"));


    tw.setItem(2,0,new QTableWidgetItem("百度"));
    tw.setItem(2,1,new QTableWidgetItem("www.baidu.com"));
    tw.setItem(2,2,new QTableWidgetItem("李彦宏"));



    tw.setRowCount(4);
    tw.setItem(3,0,new QTableWidgetItem("子节"));
    tw.setItem(3,1,new QTableWidgetItem("www.bytedance.com"));
    tw.setItem(3,2,new QTableWidgetItem("张一鸣"));

    tw.setHorizontalHeaderLabels(QStringList()<<"公司"<<"网址"<<"创始人");

    //双击某一行  删除该行
    QObject::connect(&tw,&QTableWidget::cellDoubleClicked,&tw,&QTableWidget::removeRow);
   
    w.show();
    return a.exec();
}
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值