我创建了一个 Sailfish 应用程序(使用最新的 Sailfish SDK)。我在将 C++ 对象暴露给 QML 时遇到问题。它继承了 QSettings,
class Settings : public QSettings
{
Q_OBJECT
/**/
public:
explicit Settings() : QSettings("Marcin Mielniczuk", "BigText") {}
~Settings() { qDebug() << "Dying"; }
/**/
};
我注意到根本没有调用析构函数。(没有析构函数输出)
我这样创建对象:
import QtQuick 2.0
import Sailfish.Silica 1.0
import BigText 1.0
import "pages"
ApplicationWindow
{
initialPage: MainPage { }
Settings {id: settings}
}
我的 main.cpp 是:
Q_DECL_EXPORT int main(int argc, char *argv[])
{
QScopedPointer<QGuiApplication> app(Sailfish::createApplication(argc, argv));
qmlRegisterType<Settings>("BigText", 1, 0, "Settings");
QScopedPointer<QQuickView> view(Sailfish::createView("main.qml"));
Sailfish::showView(view.data());
return app->exec();
}
我究竟做错了什么?
/edit:未打印的文本不是实际问题 - 它只是问题的一个指标。析构函数中的 QSettings 同步也不起作用。
EDIT2:请注意,我使用 Sailfish Silica 中的 ApplicationWindow,而不是 QtQuick.Controls,并且窗口显示正常。这些组件必须与库存的 qt 快速组件有所不同。