tableWidget添加按钮,添加下拉框,控件合并拆分

您所在的位置:网站首页 tablewidget添加按钮 tableWidget添加按钮,添加下拉框,控件合并拆分

tableWidget添加按钮,添加下拉框,控件合并拆分

2023-01-25 16:44| 来源: 网络整理| 查看: 265

tableWidget与控件的组合应用 与按钮组合应用动态创建按钮效果 动态创建按钮及combox效果: 按钮及combox合并与拆分效果:

与按钮组合应用 动态创建按钮

创建按钮

QPushButton *pushButton = new QPushButton(); pushButton->setText("BT1"); tableWidget->setCellWidget(0, 2, pushButton);

链接槽函数 这里所有创建的所有按钮 ,都与该函数链接

connect(pushButton, SIGNAL(clicked()), this,SLOT(pushButton_Clicked()));

槽函数 这里我们获取按钮按下信号 对按钮改了个名

void MainWindow::pushButton_Clicked( ){ /* 获取选中行号 */ int row = tableWidget->currentRow(); //声明一个widget 再降widget转为QPushButton QWidget *widget = tableWidget->cellWidget(row, 2); QPushButton *btn = (QPushButton *)widget; btn->setText("BUTTTON-" + QString::number(row)); } 效果

效果:

动态创建按钮及combox

在上节的右键添加表格源码中,增加对tablewidget添加按钮和combox功能(currentRow函数有选择的时候返回所选的行数,当没有选择的时候则返回-1,因此当无选择时默认为0)

#include "mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { /* 设置主窗体的大小与位置 */ this->setGeometry(0, 0, 800, 480); /* 实例化 */ tableWidget = new QTableWidget(this); /* 设置tableWidget表居中 */ setCentralWidget(tableWidget); /* 设置列数 */ tableWidget->setColumnCount(4); /* 设置行数 */ tableWidget->setRowCount(1); /* 设置列宽 */ tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //x先自适应宽度 tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); //然后设置要根据内容使用宽度的列 /* 使用标签设置水平标题标签 */ tableWidget->setHorizontalHeaderLabels(QStringList() /* 获取选中行号 */ int row = tableWidget->currentRow(); //声明一个widget 再降widget转为QPushButton QWidget *widget = tableWidget->cellWidget(row, 2); QPushButton *btn = (QPushButton *)widget; btn->setText("BUTTTON-" + QString::number(row)); } /* 添加单元格 */ void MainWindow::slotAdd() { /* 获取选中行号 */ int row = tableWidget->currentRow(); /* 当没有任何选中目标时row返回值为-1 */ /* 这是将在第一行添加 */ if(rowinsertRow(row); /* 添加内容 */ tableWidget->setItem(row,0,new QTableWidgetItem("20")); tableWidget->setItem(row,1,new QTableWidgetItem("10")); /* 文字水平居中 */ /* 如需字体格式参上 */ tableWidget->item(row,0)->setTextAlignment(Qt::AlignCenter); tableWidget->item(row,1)->setTextAlignment(Qt::AlignCenter); //添加按钮 QPushButton *pushButton = new QPushButton(); pushButton->setText("BTN"); tableWidget->setCellWidget(row, 2, pushButton); connect(pushButton, SIGNAL(clicked()), this,SLOT(pushButton_Clicked())); //添加combox QComboBox *combox = new QComboBox(tableWidget); combox->addItem("combox1"); combox->addItem("combox2"); //选择box2 combox->setCurrentIndex(1); //添加到表格中 tableWidget->setCellWidget(row, 3, combox); //链接信号槽 connect(combox, SIGNAL(currentIndexChanged(int)), this, SLOT(comboxchange())); // 实时获得结 } 效果:

在这里插入图片描述

按钮及combox合并与拆分

当combox选择combox1时 我们对button和combox进行合并,当选择combox2时,我们对button和combox进行拆分(这里合并直接合并到最后,如需自定义合并数目,以及多个合并时需注意表格的坐标系变换)

举例: 合并前坐标 在这里插入图片描述

合并后坐标 在这里插入图片描述 贴combox槽函数代码

//该行的按钮名 void MainWindow::comboxchange(){ /* 获取选中行号 */ int row = tableWidget->currentRow(); if(rowcellWidget(row, 3); QComboBox *combox = (QComboBox *)widget; if(combox->currentText() == "combox1") { //清空表格内容 及控件 tableWidget->clear(); //合并单元格 if(rowrowCount()) { tableWidget->setSpan( row , 2, tableWidget->rowCount() - 1, 1); tableWidget->setSpan( row , 3, tableWidget->rowCount() - 1, 1); } //重新添加控件 注意row为选中行 for(int i=0 ;i //拆分 tableWidget->clearSpans(); for(int i=0 ;irowCount() ;i++) { QPushButton *pushButton = new QPushButton(); pushButton->setText("BTN"); tableWidget->setCellWidget(i, 2, pushButton); connect(pushButton, SIGNAL(clicked()), this,SLOT(pushButton_Clicked())); QComboBox *combox = new QComboBox(tableWidget); combox->addItem("combox1"); combox->addItem("combox2"); combox->setCurrentIndex(1); tableWidget->setCellWidget(i, 3, combox); connect(combox, SIGNAL(currentIndexChanged(int)), this, SLOT(comboxchange())); // 实时获得结 } } } 效果:

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3