• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

qtableWidget复杂界面效果和添加、删除处理

武飞扬头像
雪狼牙
帮助1

学新通

通过界面拖拽,创建ui->tableWidget

设置样式表

  1.  
    QTableWidget{background-color:white; border:none;}
  2.  
    QTableView::item {border-bottom: 1px solid #d6d9dc;}
  3.  
    QTableWidget::item:hover{background-color: rgb(151, 226, 226);}
  4.  
    QTableWidget::item:selected{background-color:#E6E6FA}
  5.  
     
  6.  
    QHeaderView::section, QTableCornerButton:section{
  7.  
    padding:3px;
  8.  
    margin:0px;
  9.  
    color:#000000; /*字体颜色*/
  10.  
    border:1px solid #b3beb9;
  11.  
    border-left-width:0px;
  12.  
    border-right-width:1px;
  13.  
    border-top-width:0px;
  14.  
    border-bottom-width:1px;
  15.  
     
  16.  
    /*设置表头真正背景色*/
  17.  
    background-color: rgb(195, 195, 195);
  18.  
    }
  19.  
     
  20.  
    /*设置表头样式*/
  21.  
    QHeaderView {
  22.  
    color: rgb(0, 103, 0);
  23.  
    font: bold 10pt;
  24.  
    background-color: rgb(195, 195, 195);
  25.  
    border: 0px solid rgb(220, 220, 220);
  26.  
    border-left-color: rgba(255, 255, 255, 0);
  27.  
    border-top-color: rgba(255, 255, 255, 0);
  28.  
    border-radius:0px;
  29.  
    min-height:29px;
  30.  
    }

初始化 ui->tableWidget

  1.  
    void Managerform::init()
  2.  
    {
  3.  
    //ItemWaitSendForm *win = new ItemWaitSendForm();
  4.  
    //QModelIndex index = ui->tableWidget->model()->index(0,0);
  5.  
    //ui->tableWidget->setIndexWidget(index, win);
  6.  
     
  7.  
    ui->tableWidget->setRowCount(0);
  8.  
    ui->tableWidget->setColumnCount(7);
  9.  
     
  10.  
    QStringList header;
  11.  
    header<<QStringLiteral("用户")<<QStringLiteral("收件人")<<QStringLiteral("地址")
  12.  
    <<QStringLiteral("产品")<<QStringLiteral("实付")<<QStringLiteral("快递单号")<<QStringLiteral("操作");
  13.  
    //设置表头标签
  14.  
    ui->tableWidget->setHorizontalHeaderLabels(header);
  15.  
     
  16.  
     
  17.  
    QFontMetrics fmenu(ui->tableWidget->font());
  18.  
    int fontwidth = fmenu.width(tr("中"));
  19.  
     
  20.  
    ui->tableWidget->setFocusPolicy(Qt::NoFocus); //去掉单元格虚线
  21.  
    ui->tableWidget->horizontalHeader()->setMinimumSectionSize(3*fontwidth); //设置最小列宽
  22.  
    ui->tableWidget->verticalHeader()->setDefaultSectionSize(3.5*fontwidth); //默认行高
  23.  
     
  24.  
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//将表格设置为整行选择
  25.  
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //表格设置为禁止编辑
  26.  
     
  27.  
    ui->tableWidget->resizeRowsToContents(); //行高 根据内容自动设置
  28.  
    ui->tableWidget->resizeColumnsToContents(); //列宽 根据内容自动设置
  29.  
    ui->tableWidget->setShowGrid(false); //不显示网格线
  30.  
    ui->tableWidget->setWordWrap(true); //允许换行
  31.  
    ui->tableWidget->setColumnWidth(0, 6*fontwidth);
  32.  
    ui->tableWidget->setColumnWidth(1, 5*fontwidth);
  33.  
    ui->tableWidget->setColumnWidth(4, 5*fontwidth);
  34.  
    ui->tableWidget->setColumnWidth(5, 8*fontwidth);
  35.  
    ui->tableWidget->setColumnWidth(6, 7*fontwidth);
  36.  
     
  37.  
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch);//剩余列宽自动填充第2列
  38.  
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch);//剩余列宽自动填充第3列
  39.  
    //ui->tableWidget->horizontalHeader()->setStretchLastSection(true); //表格自动填充满
  40.  
     
  41.  
     
  42.  
    ui->tableWidget->setFrameShape(QFrame::NoFrame); //设置边框
  43.  
    ui->tableWidget->verticalHeader()->setVisible(false);//设置垂直头不可见
  44.  
    //ui->tableWidget->horizontalHeader()->setVisible(false); //设置水平头不可见
  45.  
    //ui->tableWidget->setSpan(0, 0, 1, 7); //合并单元格
  46.  
     
  47.  
    // 对表头文字的字体、颜色进行设置
  48.  
    // 获得水平方向表头的item对象
  49.  
    // QTableWidgetItem *columnHeaderItem = ui->tableWidget->horizontalHeaderItem(1);
  50.  
    // columnHeaderItem->setFont(QFont("Helvetica")); //设置字体
  51.  
    // columnHeaderItem->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
  52.  
    // columnHeaderItem->setTextColor(QColor(200,111,30)); //设置文字颜色
  53.  
     
  54.  
    //设置交替行颜色选项(默认是false)
  55.  
    ui->tableWidget->setAlternatingRowColors(true); //否则无法交替显示颜色
  56.  
    ui->tableWidget->setPalette(QPalette(Qt::lightGray)); //设置隔行变色的颜色 Qt::gray灰色
  57.  
    }

每行添加元素

  1.  
    void Managerform::onAddItemToWaitSend(TBOrderInfo data)
  2.  
    {
  3.  
    int row = ui->tableWidget->rowCount();
  4.  
    ui->tableWidget->insertRow(row);
  5.  
     
  6.  
    QModelIndex index = ui->tableWidget->model()->index(row,0);
  7.  
     
  8.  
    CheckItemForm *widget = new CheckItemForm(ui->tableWidget);
  9.  
    widget->setConnect(this);
  10.  
    widget->setText(QStringLiteral("yz多喝水"));
  11.  
    ui->tableWidget->setCellWidget(row, 0, widget);
  12.  
     
  13.  
    QTableWidgetItem* pName = new QTableWidgetItem(QStringLiteral("蔡牛牛"));
  14.  
    pName->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  15.  
    //pName->setIcon(QIcon(":/image/wang.png"));
  16.  
    ui->tableWidget->setItem(row, 1, pName);
  17.  
     
  18.  
    QTableWidgetItem* pAddress = new QTableWidgetItem(QStringLiteral("1398****984,广西壮族自治区 梧州市 藤县 和平镇 *****门 ,000000"));
  19.  
    pAddress->setTextAlignment( Qt::AlignLeft | Qt::AlignVCenter);
  20.  
    ui->tableWidget->setItem(row, 2, pAddress);
  21.  
     
  22.  
    QTableWidgetItem* pProduct = new QTableWidgetItem(QStringLiteral("5瓶装【洗涤剂】 * 2\n5瓶装【洗涤剂】 * 2\n5瓶装【洗涤剂】 * 2"));
  23.  
    pProduct->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  24.  
    ui->tableWidget->setItem(row, 3, pProduct);
  25.  
     
  26.  
    QTableWidgetItem* pActualFee = new QTableWidgetItem(QStringLiteral("176.00元"));
  27.  
    pActualFee->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  28.  
    pActualFee->setBackgroundColor(QColor(0,60,10));//1、单元格设置字体颜色、背景颜色、字体字符
  29.  
    pActualFee->setTextColor(QColor(200,111,100)); //1、单元格设置字体颜色、背景颜色、字体字符
  30.  
    pActualFee->setFont(QFont("Helvetica")); //1、单元格设置字体颜色、背景颜色、字体字符
  31.  
    ui->tableWidget->setItem(row, 4, pActualFee);
  32.  
     
  33.  
    QTableWidgetItem* pMailNo = new QTableWidgetItem(data.logistic.mailNo);
  34.  
    pMailNo->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  35.  
    ui->tableWidget->setItem(row, 5, pMailNo);
  36.  
     
  37.  
    ItemWaitSendForm *operate = new ItemWaitSendForm();
  38.  
    operate->setConnect(this);
  39.  
    //operate->setData(data);
  40.  
    ui->tableWidget->setCellWidget(row, 6, operate);
  41.  
     
  42.  
     
  43.  
    //对所有单元格设置字体
  44.  
    //ui->tableWidget->setFont(QFont("Courier"));
  45.  
    ui->tableWidget->setFont(QFont("Helvetica"));
  46.  
    }

选中某行,这里处理方法比较特别,值得借鉴

  1.  
    void Managerform::onCheckedItem(const bool flag)
  2.  
    {
  3.  
    //获取当前是哪个object发送的新号,
  4.  
    CheckItemForm *senderObj = qobject_cast<CheckItemForm*>(sender());
  5.  
    QModelIndex idx = ui->tableWidget->indexAt(QPoint(senderObj->frameGeometry().x(), senderObj->frameGeometry().y()));
  6.  
    bool enable = senderObj->isChecked();
  7.  
    int row = idx.row();
  8.  
     
  9.  
    if(enable)
  10.  
    qDebug()<<QStringLiteral("第%1行 选中").arg(row 1);
  11.  
    else
  12.  
    qDebug()<<QStringLiteral("第%1行 取消选中").arg(row 1);
  13.  
    }

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgeihgk
系列文章
更多 icon
同类精品
更多 icon
继续加载