Что я сделал
Я создал List
из QHBoxLayout's
в своем h-файле, и теперь я хочу добавить свои QVBoxLayout vLayout
все элементы списка. Я думал, что что-то вроде этого будет работать:
Сначала я заполнил список некоторыми элементами.
for(int i=0; i< COUNT; i++)
{
// create box
QHBoxLayout *hlayout_tmp = new QHBoxLayout;
// label for the box
QString name = "Channel ";
name += i;
name += ": ";
QLabel* channel = new QLabel(name);
// create slider
QSlider* slider_tmp = new QSlider(Qt::Vertical, this);
sliders.append(*slider_tmp);
// create scope
ScopeWidget2* newScope = new ScopeWidget2(bufsize, maxValue, minValue);
scopes.append(*newScope);
// put widgets together
hlayout_tmp->addWidget(channel);
hlayout_tmp->addWidget(slider_tmp);
hlayout_tmp->addWidget(newScope);
hBoxes.append(*hlayout_tmp);
}
Затем я хотел добавить hboxes в свой vlayout.
// create column
QVBoxLayout* vlayout = new QVBoxLayout();
// put all layouts together
vlayout->addLayout(hBoxes.at(0));
vlayout->addLayout(hBoxes.at(1));
И тогда я получаю следующую ошибку_ no matching function for call to 'QVBoxLayout::addLayout(const QHBoxLayout&)'vlayout->addLayout(hBoxes.at(0));
Теперь, когда я пишу этот вопрос, я понимаю, почему я получаю это сообщение. Но я понятия не имею, как это решить.
Вопрос:
Можно ли сохранить объекты в список, а не в const Type &value
, или превратить элемент в объект? Так что я могу использовать vlayout->addLayout(hBoxes.at(0));
Решение (пока работает):
Я пробую это:
Например:
// in the loop I had to change:
QSlider* slider_tmp = new QSlider(Qt::Vertical, this);
sliders.append(slider_tmp);
// And i can use the element with
vlayout->addLayout(hBoxes.at(0));
Поправьте меня, если я что-то не так сделал.
Вложение: H-файл:
#include <scopewidget2.h>
#include <QWidget>
#include <QList>
#include <QTimer>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QSlider>
#include <QLabel>
class myWidgetNew:public QWidget
{
private:
enum scope{scope1, scope2, scope3, COUNT}; // Falls weitere Scopes hinzugefügt werden sollen, können hier weitere eingefüt werden
QList<ScopeWidget2> scopes; // Liste von Scopes
QList<QVBoxLayout> vBoxes; // vertikale Boxen ( für das Raster notwendig)
QList<QHBoxLayout> hBoxes; // hoizontale Boxen
QList<QSlider> sliders;
double maxValue;
double minValue;
QTimer* timer;
QString outSring; // Ausgabe
public:
myWidgetNew();
void init_Layout();
};
Спасибо за вашу помощь
пс. Я думаю мод может закрыть эту тему.