#include "formmultiheads.h" #include "ui_formmultiheads.h" #include #include #include "newheaddialog.h" #include "formhead.h" #include "qtcommonclass.h" extern int g_iRows; extern int g_iCols; extern int g_iColsWidth; extern int g_iRowsHight; extern int g_iFixedWidth; extern int g_iFixedHeight; FormMultiHeads::FormMultiHeads(QWidget *parent) : QWidget(parent), ui(new Ui::FormMultiHeads) { ui->setupUi(this); //------------------------------------- // 强制使用Qt渲染引擎 //QApplication::setAttribute(Qt::AA_UseStyleSheetPropagationInWidgetStyles, true); //取消全局样式表 // ui->tableWidget->setStyleSheet(""); // ui->tableWidget->setAutoFillBackground(true); //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(0);//标题栏宽度 ui->tableWidget->horizontalHeader()->setFixedHeight(0);//标题栏高度 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) { QtCommonClass *qtCommon = new QtCommonClass(this); // 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 tempWidth = g_iCols*g_iColsWidth+g_iFixedWidth+8; int tempHight = g_iRows*g_iRowsHight+g_iFixedHeight+8; //设置行高度 ui->tableWidget->setRowHeight(rowcount, tempHight); if(rowcount==0) { //设置列宽 ui->tableWidget->setColumnWidth(0, tempWidth); } else { int iWidth=ui->tableWidget->columnWidth(0); if(iWidthtableWidget->setColumnWidth(0, tempWidth); } } // QString strUuid = qtCommon->getUUid(); FormHead *widgetHead = new FormHead(this, strUuid); widgetHead->Init(g_iRows, g_iCols); ui->tableWidget->setCellWidget(rowcount, 0, widgetHead); } else if (result == QDialog::Rejected) { // 处理用户点击了取消按钮的逻辑 qDebug() << "Rejected="; } else { // 处理其他情况的逻辑 qDebug() << "other="; } } } void FormMultiHeads::resizeItem(QString indexID, double tempWidth, double tempHight) { // int rowCount = ui->tableWidget->rowCount();//总行数 for(int i=0; itableWidget->cellWidget(i, 0) != nullptr ) { auto myWidget = ui->tableWidget->cellWidget(i, 0); if(myWidget) { // FormHead *widgetHead = (FormHead*)myWidget;//获得widget if(widgetHead) { if(widgetHead->m_indexID == indexID) { //设置行高度 ui->tableWidget->setRowHeight(i, tempHight+8); int iWidth=ui->tableWidget->columnWidth(0); if(iWidthtableWidget->setColumnWidth(0, tempWidth+8); } } } } } } }