Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 设置QTableWidget中单元格的默认对齐方式_C++_Qt_Qtablewidget_Text Alignment - Fatal编程技术网

C++ 设置QTableWidget中单元格的默认对齐方式

C++ 设置QTableWidget中单元格的默认对齐方式,c++,qt,qtablewidget,text-alignment,C++,Qt,Qtablewidget,Text Alignment,我知道您可以使用以下方法设置每个项目的对齐方式: TableWidget->item(0,0)->setTextAlignment(Qt::AlignLeft); 但是,我希望为所有单元格设置默认对齐方式,以便不必在每次创建新项目时都进行设置。可能吗?是的,可能。但您需要了解,您不是在修改表小部件的属性,而是在修改表小部件项的属性。首先创建您自己的项目,并根据需要进行设置 QTableWidgetItem * protoitem = new QTableWidgetItem();

我知道您可以使用以下方法设置每个项目的对齐方式:

TableWidget->item(0,0)->setTextAlignment(Qt::AlignLeft);

但是,我希望为所有单元格设置默认对齐方式,以便不必在每次创建新项目时都进行设置。可能吗?

是的,可能。但您需要了解,您不是在修改表小部件的属性,而是在修改表小部件项的属性。首先创建您自己的项目,并根据需要进行设置

 QTableWidgetItem * protoitem = new QTableWidgetItem();
 protoitem->setTextAlignment(Qt::AlignLeft);
 etc...
然后,每次您希望创建一个新项而不是使用您使用的构造函数时

 QTableWidgetItem * newitem = protoitem->clone();
 tableWidget->setItem(0,0, newitem);
克隆的另一个替代方案(未测试)是在tablewidget上

QTableWidget::setItemPrototype ( const QTableWidgetItem * item )

如果您使用的是用户界面或项目是可编辑的,则最后一种方法可能更合适。

我认为没有现成的方法可以做到这一点,但有两种方法可以奏效:


1.)子类QTableWidgetItem

MyTableWidgetItem::MyTableWidgetItem() :
    QTableWidgetItem()
{
    setTextAlignment( Qt::AlignLeft );
}
然而,对于单个设置来说,这可能有点过头了,您可能希望重载的所有四个构造函数


2.)另一种方法是:
注意:链接的文章讨论了单元测试,但是这样做还有很多好处

而不是

QTableWidgetItem* myItem = new QTableWidgetItem( "foo" );
item->setTextAlignment( Qt::AlignLeft );
你能行

QTableWidgetItem* myItem = myFactory->createTableWidgetItem( "foo" );
其中
myFactory
MyTableWidgetFactory
的对象

QTableWidgetItem* myItem = myFactory->createTableWidgetItem( "foo" );