В QML-приложении я создаю экземпляры двух классов, которые наследуют QObject, и одному классу требуется доступ к другому классу. Также оба класса объявлены в qml в main.cpp с помощью qmlRegisterType. Когда я использую код, подобный следующему, я получаю qqmlprivate-error. Этот вопрос похож на этот, но это не то же самое. Как я могу это исправить? Благодарю вас!
TimeControl.h
class TimeControl : public QObject
{
Q_OBJECT
public:
explicit TimeControl(QObject *parent = nullptr);
};
MyTimeTable.h
class MyTimeTable : public QObject
{
Q_OBJECT
public:
explicit MyTimeTable(TimeControl *timeControl, QObject *parent = nullptr);
private:
TimeControl *m_timeControl = nullptr;
};
MyTimeTable.cpp
MyTimeTable::MyTimeTable(TimeControl *timeControl, QObject *parent)
: QObject(parent)
{
m_timeControl = timeControl;
}
main.cpp
qmlRegisterType<TimeControl> ("tld.we.TimeControl", 1, 0, "TimeControl");
qmlRegisterType<MyTimeControl> ("tld.we.MyTimeTable", 1, 0, "MyTimeTable");
TimeControl *timeControl = new TimeControl();
MyTimeTable timeTable(timeControl);
добавлен QML-код
import tld.we.MyTimeTable 1.0
Popup{
MyTimeTable{
id: timeTable
}
ToolButton{
text: "Update"
onClicked:
timeTable.updateData();
}
MyTimeTable timeTable(&timeControl);
Вероятно, должно бытьMyTimeTable timeTable(timeControl);
? Кроме того, добавьте сообщение об ошибке, которое вы получаете, и любой QML, который вы написали, чтобы попытаться получить доступ к этим объектам/классам. - person David K. Hess   schedule 06.05.2020