Qt的表中的QTreeWidgetItem控件批量new出来
原先的代码
treeWidget = new QTreeWidget;//QTreeWidget的设置
treeWidget->setStyleSheet("QTreeWidget::item{height:35px;}\
QTreeWidget::item:selected{border-image: url(images/bar.png);}\
QTreeWidget::item:pressed{border-image: url(images/bar.png);}\
QTreeWidget::item:hover{border-image: url(images/bar.png);}\
QHeaderView::section{border-image: url(images/Header.png); height:40px;font:13pt '宋体';color: white;padding-left:40px;}\
QTreeWidget::indicator{border-image:url(images/full.png)};\
");
treeWidget->setHeaderLabel(tr(u8"调查问卷表"));
QFont mixBtnFont("SimSun",24, QFont::Bold);
QTreeWidgetItem *group1 = new QTreeWidgetItem(treeWidget);//根节点设置
group1->setText(0, u8"适用表");
group1->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
group1->setCheckState(1, Qt::Unchecked);//1是关闭,0是开启勾选
//以下是子节点的设置,一共十四个子节点的选项QTreeWidgetItem类,太多了-------------
QTreeWidgetItem *subitem11 = new QTreeWidgetItem(group1);
subitem11->setText(0, u8"表一");
subitem11->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem11->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem12 = new QTreeWidgetItem(group1);
subitem12->setText(0, u8"表二");
subitem12->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem12->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem13 = new QTreeWidgetItem(group1);
subitem13->setText(0, u8"表三");
subitem13->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem13->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem14 = new QTreeWidgetItem(group1);
subitem14->setText(0, u8"表四");
subitem14->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem14->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem15 = new QTreeWidgetItem(group1);
subitem15->setText(0, u8"表五");
subitem15->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem15->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem16 = new QTreeWidgetItem(group1);
subitem16->setText(0, u8"表六");
subitem16->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem16->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem17 = new QTreeWidgetItem(group1);
subitem17->setText(0, u8"表七");
subitem17->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem17->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem18 = new QTreeWidgetItem(group1);
subitem18->setText(0, u8"表八");
subitem18->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem18->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem19 = new QTreeWidgetItem(group1);
subitem19->setText(0, u8"表九");
subitem19->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem19->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem1a = new QTreeWidgetItem(group1);
subitem1a->setText(0, u8"表十");
subitem1a->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem1a->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem1b = new QTreeWidgetItem(group1);
subitem1b->setText(0, u8"表十一");
subitem1b->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem1b->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem1c = new QTreeWidgetItem(group1);
subitem1c->setText(0, u8"表十二");
subitem1c->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem1c->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem1d = new QTreeWidgetItem(group1);
subitem1d->setText(0, u8"表十三");
subitem1d->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem1d->setCheckState(1, Qt::Unchecked);
QTreeWidgetItem *subitem1e = new QTreeWidgetItem(group1);
subitem1e->setText(0, u8"表十四");
subitem1e->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
subitem1e->setCheckState(1, Qt::Unchecked);
//准备换掉上面的又臭又长--------------------------------------
用向量的批量new出控件定义控件
上代码的子节点的设置,一共十四个QTreeWidgetItem改成以下的
QStringList str;
str << u8"表一" << u8"表二"<< u8"表三"<< u8"表四"<< u8"表五"<< u8"表六"<< u8"表七"<< u8"表八"
<< u8"表九"<< u8"表十"<< u8"表十一" << u8"表十二" << u8"表十三" << u8"表十四";
QVector<QTreeWidgetItem*> items(14);//1.防止内存拷贝给了14。2.容器内最好是指针类型。
for(int i = 0;i<items.size();i++){
items[i] = new QTreeWidgetItem(group1);
items[i]->setText(0,str.at(i));
items[i]->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
items[i]->setCheckState(1, Qt::Unchecked);
这个看起来舒服多了,强迫症者表示舒适。