174 lines
6.5 KiB
C++
174 lines
6.5 KiB
C++
#include "formmultiheads.h"
|
|
#include "ui_formmultiheads.h"
|
|
|
|
#include <QDebug>
|
|
#include <QMenu>
|
|
#include "newheaddialog.h"
|
|
#include "formhead.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);
|
|
|
|
//-------------------------------------
|
|
//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(10);//标题栏宽度
|
|
ui->tableWidget->horizontalHeader()->setFixedHeight(10);//标题栏高度
|
|
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 tempWidth = g_iCols*g_iColsWidth+g_iFixedWidth+15;
|
|
int tempHight = g_iRows*g_iRowsHight+g_iFixedHeight+15;
|
|
//设置行高度
|
|
ui->tableWidget->setRowHeight(rowcount, tempHight);
|
|
if(rowcount==0)
|
|
{
|
|
//设置列宽
|
|
ui->tableWidget->setColumnWidth(0, tempWidth);
|
|
}
|
|
else
|
|
{
|
|
int iWidth=ui->tableWidget->columnWidth(0);
|
|
if(iWidth<g_iCols*g_iColsWidth)//列宽变大
|
|
{
|
|
//设置列宽
|
|
ui->tableWidget->setColumnWidth(0, tempWidth);
|
|
}
|
|
}
|
|
//
|
|
FormHead *widgetHead = new FormHead(this, 1);
|
|
widgetHead->Init(g_iRows, g_iCols);
|
|
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; i<g_iRows; i++)
|
|
// {
|
|
// for(int j=0; j<g_iCols; j++)
|
|
// {
|
|
// QTableWidgetItem* item = new QTableWidgetItem("");
|
|
// ui->tableWidget->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();
|
|
// }
|
|
// }
|
|
}
|