QT操作word表格——垂直居中、水平居中

说明:网上大部分是水平居中,基本没有找到QT的垂直居中,查了好多资料才实现了垂直居中。

函数调用:垂直居中、水平居中
word.setRowAlignment(1,1,0);//第一个表格,第一行,居中

主要是这句话:
range->querySubObject(“ParagraphFormat”)->setProperty(“Alignment”,“wdAlignParagraphCenter”);//水平居中
range->querySubObject(“Cells”)->setProperty(“VerticalAlignment”,“wdCellAlignVerticalCenter”);//垂直居中

函数定义

void QWord::setRowAlignment(int tableIndex,int row,int flag)
{   
	QAxObject* tables = m_document->querySubObject("Tables");	
	if(nullptr== tables)
	{
		return;
	}
	QAxObject* table = tables->querySubObject("Item(int)",tableIndex);
	if(nullptr== table )
	{
		return;
	}
	QAxObject* Row= table->querySubObject("Rows(int)",row);
	if(nullptr== Row)
	{
		return;
	}
	QAxObject* range = Row->querySubObject("Range");
	if(nullptr== range)
	{
		return;
	}
	Row->querySubObject("Alignment(int)",flag);
	if(flag == 0)
	{
//        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
//        Selection.Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter 就是在网上找到的这句话,才修改成以下代码
        range->querySubObject("ParagraphFormat")->setProperty("Alignment","wdAlignParagraphCenter");//水平居中
        range->querySubObject("Cells")->setProperty("VerticalAlignment","wdCellAlignVerticalCenter");//垂直居中
	}else if(flag == 1)
	{
        range->querySubObject("ParagraphFormat")->setProperty("Alignment","wdAlignParagraphJustify");
    }else if(flag == 2)//wdAlignParagraphJustifyMed
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment","wdAlignParagraphRight");
	}else if(flag ==3)
	{
		range->querySubObject("ParagraphFormat")->setProperty("Alignment","wdAlignParagraphLeft");
	}
}

你可能感兴趣的:(QT,QT,word,表格,垂直居中,水平居中)