插入表格,插入图片,界面交互
#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()
{}
插入表格,插入图片,界面交互相关推荐
- Qt富文本 - 插入表格/列表/图片
插入表格/列表/图片 新建桌面应用程序testRichText,基类QMainWindow,勾选创建界面文件,其他选择默认. 编辑mainwindow.cpp构造函数 mainwindow.h #if ...
- MFC创建Word文档,进行插入表格、图片操作
VS2013+office2013实现Word文档的创建,以及实现插入表格.图片的操作,在数据保存完毕后会弹出窗口选择保存路径,可以保存成doc和PDF的格式. 首先在界面上添加一个保存按钮,然后添加 ...
- Latex排版 Chapter1基本使用(文档结构插入表格、图片)
Chapter1基本使用 设置文章种类 载入包 开始正文 摘要 章节目录 列表使用 插入表格 基本表格 跨列表格 位置浮动的表格 插入图片 图文并排的小图片 图文分开的大图片 参考文献 设置文章种类 ...
- overleaf(LATEX)插入表格,图片
overleaf overleaf是一个 让科学更加开放.好复制.共同合作的网站.Overleaf CEO兼共同创办人是 John Hammersley 博士 1.解决overleaf不能用中文得问题 ...
- Apache poi如何在word中的表格中插入表格,图片等操作
1.引入依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</arti ...
- LaTex跨栏插入表格或图片
一.跨栏插入图片或表格 对于双栏的LaTex模板,当需要占用两栏的空间插入图片或表格时可通过如下代码进行设置: 表格横跨两栏代码 \begin{table*}....\end{table*} 图形横跨 ...
- LaTex 插入表格与图片
表格一种常见的格式如下所示: \begin{table} \centering \caption{} \begin{tabular}{cc} \toprule ...
- NetCore 创建、编辑PDF插入表格、图片、文字(二)
1代码示例 /// <summary>/// 引入/// iTextSharp.LGPLv2.Core/// 部分例子/// </summary>public class My ...
- NetCore 创建、编辑PDF插入表格、图片、文字
1,引入:iTextSharp.LGPLv2.Core 2,在使用的文件里面引入命名空间 using iTextSharp.text; using iTextSharp.text.pdf; 3,简单的 ...
- C# VS2012操作word文档 (二).插入表格图片
在上一篇文章"C# VS2012创建word文档.(一)"中我们讲述了如何使用VS2012引用COM中Miscrosoft Word 14.0 Object Library实现创建 ...
最新文章
- matlab中system prt,急!!求救!!MATLAB关于prt报错!
- MySQL利用存储过程清除所有表中的所有记录
- 矩阵计算 pdf_线性代数II: 矩阵
- longtext长度为0是什么意思_为什么 HashMap 中链表长度大于 8 才转化为红黑树?
- 将所有文件从目录复制到Python中的另一个目录
- WINDOWS常用端口
- 华为机试HJ44:Sudoku(数独问题,深度优先遍历DFS解法)
- Android与物联网设备通信-概念入门
- 三向合并和 Git 的合并策略,手把手教你Git 合并
- 正确使用ViewStub
- js判断数组key是否存在
- vmbox虚拟机Ubuntu通过桥接方式上网
- 半色调技术简介(一)
- 央联众商APP告诉你怎样来“理”,然后才有那个“财”
- 小白的编程经验(二维数组迷宫游戏)
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
- mysql的weekday函数_MySQL WEEKDAY()用法及代码示例
- 知识图谱表示学习 TransE: Translating Embeddings for Modeling Multi-relational Data
- 企业AAA信用等级认证好处
- oca认证_OCA第2部分中的Java难题