QTableWidget常用技巧

本文详细介绍了在Qt开发中使用QTableWidget的一些常用技巧,包括表格显示设置、表格元素添加以及表格美化设计。内容涵盖设置表格行数和列数、隐藏表头、设置字体和列宽、单元格内容居中、单击表头排序、添加和编辑表格元素、自定义背景色和图标,以及行选择和编辑权限控制等。这些技巧将帮助开发者更好地定制和美化QTableWidget。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人在Qt开发应用程序时用到QTableWidget控件,总结一些常用技巧。

1.表格显示设置

    ui->IOtable->setRowCount(20);                    //设置表格行数
    ui->IOtable->setColumnCount(7);                 //设置表格列数
    QHeaderView* headerView = ui->IOtable->verticalHeader();
    headerView->setHidden(true);                   //隐藏最前面的序号行
    QStringList labels;
    labels <<IOTABLE_TYPE_ZH<<IOTABLE_NAME_ZH<<IOTABLE_VALUE_ZH<<IOTABLE_BUS_ZH<<IOTABLE_UNIT_ZH<<IOTABLE_UNITMAP_ZH<<IOTABLE_BSIM_ZH;                          //设置每一列小标题
    QFont font = ui->IOtable->horizontalHeader()->font();
    font.setBold(false);
    ui->IOtable->horizontalHeader()->setFont(font);                              //设置表头字体
    ui->IOtable->setHorizontalHeaderLabels(labels);
    ui->IOtable->horizontalHeader()->setSectionResizeMode(TYPE_COLUMN, QHeaderView::Stretch);
    ui->IOtable->horizontalHeader()->setSectionResizeMode(NAME_COLUMN, QHeaderView::ResizeToContents); //用户不可更改列宽
    ui->IOtable->horizontalHeader()->setSectionResizeMode(VALUE_COLUMN, QHeaderView::Stretch);
    ui->IOtable->horizontalHeader()->setSectionResizeMode(BUSTYPE_COLUMN, QHeaderView::ResizeToContents);
    ui->IOtable->horizontalHeader()->setSectionResizeMode(UNIT_COLUMN, QHeaderView::Stretch);
    ui->IOtable->horizontalHeader()->setSectionResizeMode(UNITMAP_COLUMN, QHeaderView::ResizeToContents);    //根据空间自动改变列宽
    ui->IOtable->horizontalHeader()->setSectionResizeMode(SIM_COLUMN, QHeaderView::Stretch);


    connect(ui->IOtable->horizontalHeader(),SIGNAL(sectionClicked(int)),\
                                       this,  SLOT(  sortByColumn(int)));                                  //自定义槽函数,点击表头排序

    ui->IOtable->setColumnWidth(TYPE_COLUMN, WinSize::lx2px(120));
    ui->IOtable->setColumnWidth(NAME_COLUMN, WinSize::lx2px(120));
    ui->IOtable->setColumnWidth(VALUE_COLUMN, WinSize::lx2px(120));
    ui->IOtable->setColumnWidth(BUSTYPE_COLUMN, WinSize::lx2px(150));
    ui->IOtable->setColumnWidth(UNIT_COLUMN, WinSize::lx2px(120));
    ui->IOtable->setColumnWidth(UNITMAP_COLUMN, WinSize::lx2px(120));
    ui->IOtable->setColumnWidth(SIM_COLUMN, WinSize::lx2px(120));
    ui->IOtable->setSelectionBehavior(QAbstractItemView::SelectRows);     //设置表格为整行选中
    /*设置选中目标个数*/
    ui->IOtable->setSelectionMode(QAbstractItemView::SingleSelection);    //选中单个目标
//    ui->IOtable->setSelectionMode(QAbstractItemView::ExtendedSelection);
//    ui->IOtable->setSelectionMode(QAbstractItemView::MultiSelection);    //选中多个目标
    ui->IOtable->setEditTriggers (QAbstractItemView::NoEditTriggers);     //将表格变为禁止编辑
//    ui->IOtable->setAlternatingRowColors(true);                         //设置隔行变色,一灰一白
    ui->IOtable->verticalHeader()->setFixedWidth(120);
    ui->IOtable->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->IOtable->setSelectionMode(QAbstractItemView::SingleSelection);
    ui->IOtable->setEditTriggers(QAbstractItemView::NoEditTriggers);


2.表格添加元素

    QTableWidgetItem *dateTime = new QTableWidgetItem(logTmp->logTime);
    ui->eventLogTable->setItem(0, DATE_COLUMN, dateTime);
    dateTime->setTextAlignment(Qt::AlignHCenter |  Qt::AlignVCenter);            //每个单元格文字居中显示

    QTableWidgetItem *logType = new QTableWidgetItem(logTmp->typeText);
    ui->eventLogTable->setItem(0, TYPE_COLUMN, logType);
    logType->setTextAlignment(Qt::AlignHCenter |  Qt::AlignVCenter);

    QString domain;
    domain =    QString("%1").arg(logTmp->domainNumber,4,16,QLatin1Char('0'));
    QString error;
    error = "0x"+domain+QString("%1").arg(logTmp->errorCodeNo, 4,16,QLatin1Char('0'));

    QTableWidgetItem *errorCode = new QTableWidgetItem(error);
    ui->eventLogTable->setItem(0, CODE_COLUMN, errorCode);
    errorCode->setTextAlignment(Qt::AlignHCenter |  Qt::AlignVCenter);

    QTableWidgetItem *titleItem = new QTableWidgetItem(logTmp->titleText);
    ui->eventLogTable->setItem(0, TITLE_COLUMN, titleItem);
    titleItem->setTextAlignment(Qt::AlignHCenter |  Qt::AlignVCenter);

    分别设计好一行中每个表格元素(列总数),按行插入到表格中。

3.QTableWidget 美化设计技巧

基本外观设置

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

FriendTable->setHorizontalHeaderLabels(HeadList);  设置表头

FriendTable->setSelectionMode(QAbstractItemView::SingleSelection);   设置选择的模式为单选择

FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows);    设置选择行为时每次选择一行

FriendTable->setShowGrid(false);   设置不显示格子线

FriendTable->setFont(font);   设置字体

 ,用void hideColumn ( int column )这个就可以隐藏某一列
用这个void showColumn ( int column )显示某一列

设置表单背景或透明

QPalette pal = musicTable->palette();
    pal.setBrush(this->backgroundRole(),QBrush(QPixmap("images/background.png")) );
    musicTable->setPalette( pal );

设置它的背景图片,也可以将QBrush初始化为QColor来设置背景颜色

 

QPalette pll = musicTable->palette();

pll.setBrush(QPalette::Base,QBrush(QColor(255,255,255,0)));

musicTable->setPalette(pll);  //和QTextEdit一样,都可以使用样式表QPalette来修改它的背景颜色和背景图片,这里我们把刷子设置为全透明的,就可以是透明的


在QTableWidget列表中添加图片的方法   
QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap("1.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
 musicTable->setItem(1,1,cubesHeaderItem);   //在第一行第一列中显示图片

 

*******************表头的属性修改****************

musicTable->horizontalHeader()->resizeSection(0,150);  //修改表头第一列的宽度为150

 musicTable->horizontalHeader()->setFixedHeight(25)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值