#include "test03.h"test03::test03(QWidget *parent, Qt::WFlags flags): QDialog(parent, flags)
{ui.setupUi(this);//tablewidget常用操作//设置表格行数ui.tableWidget->setRowCount(18);//设置表格列数ui.tableWidget->setColumnCount(2);//设置水平表头QStringList strList;strList<<tr("参数名")<< tr("参数值");ui.tableWidget->setHorizontalHeaderLabels(strList);ui.tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color:rgb(40,143,218);font:13pt '宋体';color: white;};");ui.tableWidget->verticalHeader()->setStyleSheet("QHeaderView::section{background-color:rgb(123,125,255);font:13pt '宋体';color: white;};");//设置单元格编辑状态QTableWidgetItem *pItem = new QTableWidgetItem("MaxNum");pItem->setFlags(Qt::ItemIsEnabled); //设置当前单元格编辑状态为浅色不可编辑,具体详见Qt帮助文档中的枚举体,陈列了各种编辑状态ui.tableWidget->setItem(1,0,pItem); //设置第1行第0列(行和列都是从0开始的)的内容为pItem  ui.tableWidget->setItem(1,1,new QTableWidgetItem(tr("20")));ui.tableWidget->setItem(0,0,new QTableWidgetItem(tr("MinNum")));   //设置第0行第0列单元格内容//ui.tableWidget->setItem(0,1,new QTableWidgetItem(tr("50")));  //设置第0行第1列单元格内容// ui.tableWidget->setItem(2,0,new QTableWidgetItem("80"));//添加部件ComboBox到单元格中QComboBox *pComboBox = new QComboBox();pComboBox->addItem("10");pComboBox->addItem("20");ui.tableWidget->setCellWidget(0,1,pComboBox); //添加到底0行第1列单元格中//treeWidget目录//使用右击菜单需要添加此项ui.treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);connect(ui.treeWidget, SIGNAL(customContextMenuRequested(const QPoint &)),this, SLOT(SlotCustomContextMenuRequested(const QPoint&)));QTreeWidgetItem * item1 = new QTreeWidgetItem(QStringList()<<"节点1");ui.treeWidget->addTopLevelItem(item1);//追加子节点QStringList child1 = QStringList()<<"2级节点";QTreeWidgetItem * childNode1 = new QTreeWidgetItem(child1);QStringList child2 = QStringList()<<"3级节点";QTreeWidgetItem * childNode2= new QTreeWidgetItem(child1);childNode1->addChild(childNode2);item1->addChild(childNode1);
}void test03::SlotCustomContextMenuRequested(const QPoint& pos)
{del = new QAction("删除", this);ad  = new QAction("增加",this);QMenu *popMenu = new QMenu(this);//定义右键弹出菜单QMenu* M1 = popMenu->addMenu("增加");QMenu* M2 = popMenu->addMenu("删除");M2->addAction(del);//往菜单内添加QAction M1->addAction(ad);connect(del, SIGNAL(triggered()), this, SLOT(DeleteItemFunction()));connect(ad, SIGNAL(triggered()), this, SLOT(AddItemFunction()));popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置}void test03::DeleteItemFunction()
{QTreeWidgetItem * currentItem = ui.treeWidget->currentItem();//获取当前节点if (currentItem == NULL){return;}elsedelete currentItem;
}void test03::AddItemFunction()
{QTreeWidgetItem * currentItem = ui.treeWidget->currentItem();//获取当前节点AddTreeNode(currentItem,"新子节点","新子节点");
}QTreeWidgetItem * test03::AddTreeNode(QTreeWidgetItem *parent,QString name,QString desc)
{QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name<<desc);parent->addChild(item);return item;
}void test03::on_pushButton_clicked()
{ui.stackedWidget->setCurrentIndex(0);
}void test03::on_pushButton_2_clicked()
{ui.stackedWidget->setCurrentIndex(1);
}void test03::on_pushButton_3_clicked()
{ui.stackedWidget->setCurrentIndex(2);
}void test03::on_pushButton_4_clicked()
{getContent(0);
}void test03::on_pushButton_5_clicked()
{getContent(1);
}void test03::on_pushButton_6_clicked()
{QString path="C://Users//lt265//Desktop//新建 DOCX 文档.docx";if(path.isEmpty()==false){QFile file(path);QAxObject *words= new QAxObject(this);/**定义一个指针**/words->setControl("kwps.Application");//指向com文件类型setControlwords->setProperty("Visible",false);//设置是否提示或者显示对话框setPropertyQAxObject *workbooks = words->querySubObject("Documents");//获取工作簿(excel文件)集合querySubObjectworkbooks->dynamicCall("Add(QString)", path);//链接到具体的文件dynamicCall//path至关重要,获取excel文件的路径//打开一个word文件,获取文档QAxObject *workbook = words->querySubObject("ActiveDocument");//获取word中已经有数值的区域querySubObject/********修改一个位置的内容*********/QString sLabel="XXXXX";//此处必须为文档中被标记为书签的内容,下面语句的意思就是确定书签的位置:QAxObject *pBookmark = workbook->querySubObject("Bookmarks(QString)",sLabel);//找到活跃区域内的书签querySubObject//就是把书签内容直接给你替换了QString sText=ui.textEdit_2->toPlainText();//此处为替换内容pBookmark->dynamicCall("Select(void)");//选中要选中的区域pBookmark->querySubObject("Range")->setProperty("Text",sText);//进行替换操作/*****截图*******/QPixmap pix = QPixmap::grabWidget(ui.tableWidget);QString strFile2="C://Users//lt265//Desktop";pix.save(QString("%1/34.png").arg(strFile2));QString strFile=strFile2+"//34.png";QString screenshot="截图";//此处必须为文档中被标记为书签的内容,下面语句的意思就是确定书签的位置:QAxObject *pBookmark2 = workbook->querySubObject("Bookmarks(QVariant)",screenshot);//找到活跃区域内的书签querySubObjectif(!pBookmark2->isNull()){pBookmark2->dynamicCall("Select(void)");QAxObject *range;range = pBookmark2->querySubObject("Range");QVariant tmp = range->asVariant();QList<QVariant>qList;//strFile 图片路径qList<<QVariant(QString::fromLocal8Bit(QString(strFile).toLocal8Bit()));qList<<QVariant(false);qList<<QVariant(true);qList<<tmp;QAxObject *Inlineshapes = workbook->querySubObject("InlineShapes");// pBookmark->querySubObject("Range")->setProperty("Text",qList);//进行替换操作Inlineshapes->dynamicCall("AddPicture(const QString&, QVariant, QVariant ,QVariant)",qList);delete Inlineshapes;delete range;}delete  pBookmark2;/*****插入表格*******/int mrow=ui.tableWidget->rowCount();                //行数int mcolumn=ui.tableWidget->columnCount();        //列数QString m_table="表格";QAxObject *range = workbook->querySubObject("Bookmarks(QString)",m_table)->querySubObject("Range");//找到活跃区域内的书签querySubObject,并在该区域插入表格QAxObject *tables = workbook->querySubObject("Tables");QAxObject *table = tables->querySubObject("Add(QVariant,int,int)",range->asVariant(),mrow+1,mcolumn);// 行和列table->setProperty("Style","网格型");/*****设置表头*******/QStringList strList2;strList2<<tr("参数名")<< tr("参数值");for(int i=0;i<mcolumn;i++){table->querySubObject("Cell(Long,Long)",1,i+1)->querySubObject("Range")->dynamicCall("SetText(QString)", strList2.at(i));//设置表格内容}/*****填充表格*******/for(int i=0;i<ui.tableWidget->rowCount();i++){for(int j=0;j<ui.tableWidget->columnCount();j++){if(i==0&&j==1){QWidget *widgetSex=ui.tableWidget->cellWidget(i,j);QComboBox *sex=(QComboBox*)widgetSex;//sex->currentText();table->querySubObject("Cell(Long,Long)",i+2,j+1)->querySubObject("Range")->dynamicCall("SetText(QString)",  sex->currentText());}else{QTableWidgetItem* item = ui.tableWidget->item(i,j);if(item != NULL){table->querySubObject("Cell(Long,Long)",i+2,j+1)->querySubObject("Range")->dynamicCall("SetText(QString)", ui.tableWidget->item(i,j)->text());}}}}/*****保存*******/QString pathsave = QFileDialog::getSaveFileName(this,"Save","C://Users//lt265//Desktop","kwps(*doc)");//QString pathsave = QFileDialog::getSaveFileName(this,"Save","../","kwps(*doc)");if(pathsave.isEmpty()==true){return;}workbook->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(pathsave));workbook->dynamicCall("Close(bool)", true);words->dynamicCall("Quit()");delete workbook;delete words;file.close();QMessageBox::warning(this,"完成","文件已经保存",QMessageBox::Yes);}
}void test03::getContent(int type)
{QString style;QString str = ui.textEdit->toPlainText();QString tmp;for (int i=0;i<str.length();i++){if ( type?(str.at(i) >='0' && str.at(i)<='9'):(str.at(i) <'0' || str.at(i)>'9') ){tmp.append(str.at(i)); }}ui.textBrowser->setText(tmp);
}test03::~test03()
{}

插入表格,插入图片,界面交互相关推荐

  1. Qt富文本 - 插入表格/列表/图片

    插入表格/列表/图片 新建桌面应用程序testRichText,基类QMainWindow,勾选创建界面文件,其他选择默认. 编辑mainwindow.cpp构造函数 mainwindow.h #if ...

  2. MFC创建Word文档,进行插入表格、图片操作

    VS2013+office2013实现Word文档的创建,以及实现插入表格.图片的操作,在数据保存完毕后会弹出窗口选择保存路径,可以保存成doc和PDF的格式. 首先在界面上添加一个保存按钮,然后添加 ...

  3. Latex排版 Chapter1基本使用(文档结构插入表格、图片)

    Chapter1基本使用 设置文章种类 载入包 开始正文 摘要 章节目录 列表使用 插入表格 基本表格 跨列表格 位置浮动的表格 插入图片 图文并排的小图片 图文分开的大图片 参考文献 设置文章种类 ...

  4. overleaf(LATEX)插入表格,图片

    overleaf overleaf是一个 让科学更加开放.好复制.共同合作的网站.Overleaf CEO兼共同创办人是 John Hammersley 博士 1.解决overleaf不能用中文得问题 ...

  5. Apache poi如何在word中的表格中插入表格,图片等操作

    1.引入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</arti ...

  6. LaTex跨栏插入表格或图片

    一.跨栏插入图片或表格 对于双栏的LaTex模板,当需要占用两栏的空间插入图片或表格时可通过如下代码进行设置: 表格横跨两栏代码 \begin{table*}....\end{table*} 图形横跨 ...

  7. LaTex 插入表格与图片

    表格一种常见的格式如下所示: \begin{table}     \centering     \caption{}     \begin{tabular}{cc}         \toprule ...

  8. NetCore 创建、编辑PDF插入表格、图片、文字(二)

    1代码示例 /// <summary>/// 引入/// iTextSharp.LGPLv2.Core/// 部分例子/// </summary>public class My ...

  9. NetCore 创建、编辑PDF插入表格、图片、文字

    1,引入:iTextSharp.LGPLv2.Core 2,在使用的文件里面引入命名空间 using iTextSharp.text; using iTextSharp.text.pdf; 3,简单的 ...

  10. C# VS2012操作word文档 (二).插入表格图片

    在上一篇文章"C# VS2012创建word文档.(一)"中我们讲述了如何使用VS2012引用COM中Miscrosoft Word 14.0 Object Library实现创建 ...

最新文章

  1. matlab中system prt,急!!求救!!MATLAB关于prt报错!
  2. MySQL利用存储过程清除所有表中的所有记录
  3. 矩阵计算 pdf_线性代数II: 矩阵
  4. longtext长度为0是什么意思_为什么 HashMap 中链表长度大于 8 才转化为红黑树?
  5. 将所有文件从目录复制到Python中的另一个目录
  6. WINDOWS常用端口
  7. 华为机试HJ44:Sudoku(数独问题,深度优先遍历DFS解法)
  8. Android与物联网设备通信-概念入门
  9. 三向合并和 Git 的合并策略,手把手教你Git 合并
  10. 正确使用ViewStub
  11. js判断数组key是否存在
  12. vmbox虚拟机Ubuntu通过桥接方式上网
  13. 半色调技术简介(一)
  14. 央联众商APP告诉你怎样来“理”,然后才有那个“财”
  15. 小白的编程经验(二维数组迷宫游戏)
  16. 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
  17. mysql的weekday函数_MySQL WEEKDAY()用法及代码示例
  18. 知识图谱表示学习 TransE: Translating Embeddings for Modeling Multi-relational Data
  19. 企业AAA信用等级认证好处
  20. oca认证_OCA第2部分中的Java难题

热门文章

  1. Java 【Map】
  2. rke部署k8s_v1.20.15高可用
  3. 图像处理之哈哈镜的实现
  4. 面经_西安葡萄城_软件开发实习生
  5. 红米k50 Magisk(面具)安装教程(备份)
  6. 基于SSM+mysql的Web人事HR系统实现,Java实现的OA考勤管理系统
  7. Java实现对数字进行加密
  8. 国语-台大陈蕴侬-应用深度学习-2021
  9. android 编译make指令
  10. 电脑android模拟器下载地址,灵猫传电脑版怎么下载 安卓模拟器电脑版下载地址...