Я использую Qt и имею некоторые реальные основные проблемы. Я создал свой собственный виджет MyTest, который имеет переменную obj
. Мне нужно установить эту переменную obj
из объекта за пределами виджета, чтобы переменная копировалась не только указателем на другой объект. Я получаю сообщение об ошибке и не могу понять, как это сделать. Это код, я использую:Как скопировать объект в Qt?
MyTest.h:
class MyTest : public QWidget
{
Q_OBJECT
public:
void setObj(QObject &inobj);
QObject obj;
....
}
MyTest.cpp:
void MyTest::setObj(QObject &inobj) {
obj = inobj; //HERE I get the error message: "illegal access from 'QObject' to protected/private member 'QObject::operator=(const QObject &)'"
}
main.cpp:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QObject *ob = new QObject();
MyTest w;
w.setObj(*ob);
}
Я хотел бы пояснить, что ничто не мешает вам использовать макрос Q_DISABLE_COPY, даже если ваш класс не является результатом QObject, поскольку он вообще не имеет никакого отношения к QObject. – rightaway717