В Qt Я пытаюсь настроить свой собственный QWidget, поэтому все должно работать хорошо из-за управления памятью и другими вещами. Но я не могу понять, что все в порядке с указателями, кучей и стек. У меня есть мой виджет MyWidget, у которого есть QList с некоторыми объектами. Я не могу понять, как все правильно настроить.Qt: Настройте свой собственный QWidget в правильном направлении
Вы можете увидеть мой код ниже, и у меня есть некоторые вопросы по поводу этого:
Список переменного instace создаются в куче, было бы лучше, чтобы создать его в стеке?
В моем списке у меня есть указатели, было бы лучше просто создать объект в стеке и добавить его в список? (Так что у меня нет указателей в списке вообще)
Когда я добавляю объекты в список, они получат список в качестве родителя автоматически? Итак, когда я удаляю список, все объекты внутри списка будут удалены?
для каждого цикла я пытаюсь использовать не работаю, я получил «тип указателя/массива, как ожидается, для этой операции вместо„Int“»
В моем коде я хочу создайте другие виджеты, которые переносят объект из списка в качестве параметров. Правильно ли это сделать, как я? Метод экземпляра MyOtherWidget выглядит следующим образом: MyOtherWidget (MyObject * MyObject, QWidget * Родитель)
Спасибо за вашу помощь! Я новичок в Qt и C++, поэтому было бы здорово, если бы вы могли вести меня в правильном направлении. Как я могу настроить это правильно, чтобы сделать его легким, не получить утечки памяти и использовать как можно меньше памяти. Как бы вы настроили одно и то же?
Это мой код:
MyWidget.h:
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0);
~MyWidget();
private:
QList<MyObject*> *list;
};
MyWidget.cpp:
MyWidget::MyWidget(QWidget *parent)
{
ui.setupUi(this);
list = new QList<MyObject*>();
for (int i = 0; i<10; i++)
{
MyObject *myObject = new MyObject("Hello",this);
list->append(myObject);
}
foreach(MyObject *myObject, list)
{
//Lets say I want to create other widgets here and that they takes a MyObject as a parameter
MyOtherWidget *myOtherWidget = new MyOtherWidget(myObject,this);
}
}
MyWidget::~MyWidget(){
delete list;
}
Спасибо! Еще один вопрос: метод экземпляра MyObject выглядит как MyObject (строка QString *, QObject * parent = 0). Когда я использую новый MyObject («Hello», this); Должен ли я иметь this-> setParent (parent) в методе экземпляра MyObject? Или родитель будет автоматически установлен? Если я использую setParent() в методе экземпляра, что произойдет, если я оставлю родительский пустой? Извините за все вопросы, но ваши ответы были очень полезными! – Martin