#include "formmultiheads.h" #include "ui_formmultiheads.h" #include #include #include "newheaddialog.h" #include "formhead.h" extern int g_iRows; extern int g_iCols; extern int g_iColsWidth; extern int g_iRowsHight; FormMultiHeads::FormMultiHeads(QWidget *parent) : QWidget(parent), ui(new Ui::FormMultiHeads) { ui->setupUi(this); //------------------------------------- //ui->tableWidget->hide(); //隐藏网格线 ui->tableWidget->setShowGrid(false); //设置样式表,不显示竖直边框 ui->tableWidget->setStyleSheet( "QTableView::item {border-left: 0px solid black;} \ QTableView::item:selected {border-left: 0px solid black;}\ QTableView::item {border-right: 0px solid black;} \ QTableView::item:selected {border-right: 0px solid black;}"); // //ui->tableWidget->verticalHeader()->hide(); //行 //ui->tableWidget->horizontalHeader()->hide(); //列 ui->tableWidget->verticalHeader()->setFixedWidth(3);//标题栏宽度 ui->tableWidget->horizontalHeader()->setFixedHeight(3);//标题栏高度 ui->tableWidget->setColumnCount(1); //动态设置列数 ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//最后一列铺满最后 //标题 QTableWidgetItem *headerItem = new QTableWidgetItem(""); ui->tableWidget->setHorizontalHeaderItem(0, headerItem); //我们让一列也可以滑动 ui->tableWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); ui->tableWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); // 设置右键菜单策略 ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->tableWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint))); // 在窗口构造函数中 //ui->tableWidget->installEventFilter(this); } FormMultiHeads::~FormMultiHeads() { delete ui; } void FormMultiHeads::slotContextMenu(QPoint pos) { QMenu menu(ui->tableWidget); QAction *newAction = menu.addAction("新建图头"); // 弹出菜单 QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos)); if (selectedAction == newAction) { NewHeadDialog *dlg = new NewHeadDialog(this); // dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象 int result = dlg->exec();//模态对话框 if (result == QDialog::Accepted) { // 处理用户点击了确定按钮的逻辑 qDebug() << "Accepted="; int rowcount = ui->tableWidget->rowCount(); //总行数 //增加1行 ui->tableWidget->setRowCount(rowcount+1); //行标题 QTableWidgetItem *headerItem = new QTableWidgetItem(""); ui->tableWidget->setVerticalHeaderItem(rowcount, headerItem); int iWidth=0; //设置行高度 ui->tableWidget->setRowHeight(rowcount, g_iRows*(g_iRowsHight+2)+1); if(rowcount==0) { iWidth=g_iCols*g_iColsWidth; //设置列宽 ui->tableWidget->setColumnWidth(0, g_iCols*(g_iColsWidth+1)+1); } else { iWidth=ui->tableWidget->columnWidth(0); if(iWidthtableWidget->setColumnWidth(0, g_iCols*(g_iColsWidth+1)+1); } } // FormHead *widgetHead = new FormHead(this, 1); widgetHead->Init(g_iRows, g_iCols, iWidth); ui->tableWidget->setCellWidget(rowcount, 0, widgetHead); } else if (result == QDialog::Rejected) { // 处理用户点击了取消按钮的逻辑 qDebug() << "Rejected="; } else { // 处理其他情况的逻辑 qDebug() << "other="; } } // if(ui->tableWidget->rowCount()==0 && ui->tableWidget->rowCount()==0) // { // QMenu menu(ui->tableWidget); // QAction *newAction = menu.addAction("新建图头"); // // 弹出菜单 // QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos)); // if (selectedAction == newAction) { // NewHeadDialog *dlg = new NewHeadDialog(this); // // // dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象 // int result = dlg->exec();//模态对话框 // if (result == QDialog::Accepted) { // // 处理用户点击了确定按钮的逻辑 // qDebug() << "Accepted="; // // // ui->tableWidget->clear(); // // // ui->tableWidget->setColumnCount(g_iCols); // ui->tableWidget->setRowCount(g_iRows); //动态设置行数 // for(int i=0; itableWidget->setItem(i, j, item); // } // } // } // else if (result == QDialog::Rejected) { // // 处理用户点击了取消按钮的逻辑 // qDebug() << "Rejected="; // } // else { // // 处理其他情况的逻辑 // qDebug() << "other="; // } // } // } // else // { // QMenu menu(ui->tableWidget); // QAction *mergeAction = menu.addAction("合并表格"); // QAction *refreshAction = menu.addAction("拆分表格"); // QAction *deleteAction = menu.addAction("删除行"); // QAction *addAction = menu.addAction("添加行"); // // 弹出菜单 // QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos)); // if (selectedAction == mergeAction) { // qDebug() << "合并表格"; // slotMerge(); // } else if (selectedAction == deleteAction) { // //删除1行 // int row = ui->tableWidget->currentRow(); // ui->tableWidget->removeRow(row); // } else if (selectedAction == refreshAction) { // qDebug() << "拆分表格"; // slotSplit(); // } // } }