如何在QScrollArea中对QWidgets列表进行排序

时间:2015-09-27 11:34:38

标签: c++ list qt sorting qwidget

我有很多行包含图片,文字和一堆数据。每行都是单独的QWidget。每个都有一个唯一的编号(由用户输入,使用setObjectName("rzad_"+number))。我需要做的是每次添加新内容时按降序对行进行排序。

我该怎么做?

编辑: 我尝试过全局QListWidget,但在检索小部件时崩溃了。在将QWidget添加到QListWidget之后,我可以执行此操作:

ui->scrollAreaWidgetContentsZdjeciaButow->layout()->addWidget(listaWidget->findChild<QWidget*>("rzadKontener_" + poziom));

它会将小部件添加到该区域,但在此之后,当我调用sortRows方法时,

std::sort(poziomyNachylenia.begin(), poziomyNachylenia.end(), std::greater<int>());

QWidget* nowyZestawRzedow = new QWidget; //new widget for sorted rows
QVBoxLayout* nowyZestawRzedowLayout = new QVBoxLayout;
nowyZestawRzedowLayout->setContentsMargins(-5, -5, -5, -5);
nowyZestawRzedowLayout->setAlignment(Qt::AlignLeft);
nowyZestawRzedowLayout->setAlignment(Qt::AlignTop);
nowyZestawRzedow->setLayout(nowyZestawRzedowLayout);

qDebug() << ui->scrollAreaWidgetContentsZdjeciaButow->layout()->count() << "count";

for (int i = 0; i < ui->scrollAreaWidgetContentsZdjeciaButow->layout()->count(); ++i) {
    QString numerRzedu = QString::number(poziomyNachylenia[i]);

    //this crashes the app
    nowyZestawRzedow->layout()->addWidget(listaWidget->findChild<QWidget*>("rzadKontener_" + numerRzedu)); 
    //and so does this.
    QString nameT = listaWidget->findChild<QWidget*>("rzadKontener_" + numerRzedu)->objectName();  
    qDebug() << "added" << nameT;
}

是什么给出了?

0 个答案:

没有答案