在某些场合,需要呈现多个图表或者界面,但是图表的个数是不固定的。
就可以先生成一定数量的父对象,来承接图表。同时在界面预览不够时增加滚动条效果。
核心思路:利用Qt布局的QGridLayout-栅格布局与QScrollArea结合
效果如下:
demo核心代码:
for(int i=0;i<200;i++)
{
LabelModel *label = new LabelModel(this);
label->setMinimumSize(100,200);
connect(label,SIGNAL(sigSetQLabel()),this,SLOT(slotResizeLabel()));
label->setLabelIndex(i);
label->setText("hello qt!"+QString::number(i));
label->hide();
label->setStyleSheet("background-color:green");
_vecLabelModel.append(label);
}
void Widget::on_pushButton_clicked()
{
int totalNum=ui->lineEdit->text().toInt();
int column=ui->lineEdit_2->text().toInt();
for(int i=0;i<totalNum;i++)
{
int r = i / column;
int c = i % column;
ui->gridLayout->addWidget(_vecLabelModel.at(i),r,c);
_vecLabelModel.at(i)->show();
}
for(int j=totalNum;j<100;j++)
{
_vecLabelModel.at(j)->hide();
}
}
完整工程:https://download.youkuaiyun.com/download/c_shell_python/16591251