Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;信号未在QML侧捕捉到 我在代码> QML中检查了 Qt C++信号。这是我的UeSettings课程标题: #ifndef UESETTINGS_H #define UESETTINGS_H #include <QObject> #include <QSqlDatabase> #include <QString> #include <QStringList> #include <QDebug> #include <QSqlQuery> #include <QSqlError> #include <QDir> #include <QDateTime> #include "uedefaults.h" #include "models/ueprintersmodel.h" #include "uetypes.h" /** * @brief The UeSettings class */ class UeSettings : public QObject { Q_OBJECT private: /** * @brief m_ueServerAddress */ QString m_ueServerAddress; /** * @brief m_ueServerPort */ QString m_ueServerPort; /** * @brief m_ueDatabaseName */ QString m_ueDatabaseName; /** * @brief m_ueDatabaseUsername */ QString m_ueDatabaseUsername; /** * @brief m_ueDatabasePassword */ QString m_ueDatabasePassword; /** * @brief m_ueHostname */ QString m_ueHostname; /** * @brief m_ueNumberOfTopSalesProductsShown */ QString m_ueNumberOfTopSalesProductsShown; /** * @brief m_ueDb */ QSqlDatabase m_ueDb; /** * @brief m_ueAutomaticStockUpdateFromFirstWarehouse */ bool m_ueAutomaticStockUpdateFromFirstWarehouse; /** * @brief m_ueAutoLogoffWorkerAtBill */ bool m_ueAutoLogoffWorkerAtBill; /** * @brief m_uePrintersModel */ UePrintersModel* m_uePrintersModel; /** * @brief ueSetServerAddress * @param address */ inline void ueSetServerAddress(const QString& address) { this->m_ueServerAddress=address; } /** * @brief ueSetServerPort * @param port */ inline void ueSetServerPort(const QString& port) { this->m_ueServerPort=port; } /** * @brief ueSetDatabaseName * @param dbName */ inline void ueSetDatabaseName(const QString& dbName) { this->m_ueDatabaseName=dbName; } /** * @brief ueSetDatabaseUsername * @param dbUsername */ inline void ueSetDatabaseUsername(const QString& dbUsername) { this->m_ueDatabaseUsername=dbUsername; } /** * @brief ueSetDatabasePassword * @param dbPassword */ inline void ueSetDatabasePassword(const QString& dbPassword) { this->m_ueDatabasePassword=dbPassword; } /** * @brief ueSetNumberOfTopSalesProductsShown * @param topN */ inline void ueSetNumberOfTopSalesProductsShown(const QString& topN) { this->m_ueNumberOfTopSalesProductsShown=topN; } /** * @brief ueSetHostname * @param hostname */ inline void ueSetHostname(const QString& hostname) { this->m_ueHostname=hostname; } /** * @brief ueSetAutomaticStockUpdateFromFirstWarehouse * @param automaticStockUpdate */ inline void ueSetAutomaticStockUpdateFromFirstWarehouse(const bool& automaticStockUpdate) { this->m_ueAutomaticStockUpdateFromFirstWarehouse=automaticStockUpdate; } /** * @brief ueSetAutoLogoffWorkerAtBill * @param automaticLogoffWorkerAtBill */ inline void ueSetAutoLogoffWorkerAtBill(const bool& automaticLogoffWorkerAtBill) { this->m_ueAutoLogoffWorkerAtBill=automaticLogoffWorkerAtBill; } /** * @brief uePrintersModel * @return */ inline UePrintersModel* uePrintersModel() const { return this->m_uePrintersModel; } /** * @brief ueSetPrintersModel * @param printersModel */ inline void ueSetPrintersModel(UePrintersModel* const printersModel=0) { this->m_uePrintersModel=printersModel; } /** * @brief ueDatabase * @return */ QSqlDatabase ueDatabase() { return this->m_ueDb; } /** * @brief ueSetDatabase * @param database */ void ueSetDatabase(const QSqlDatabase& database) { this->m_ueDb=database; } /** * @brief ueCreateDatabase * @return true if settings database successfully created, otherwise false */ bool ueCreateDatabase(); /** * @brief ueDatabaseExists * @return true if settings database exists, otherwise false */ bool ueDatabaseExists(); public: /** * @brief UeSettings * @param parent * @param printersModel */ explicit UeSettings(QObject *parent = 0, UePrintersModel* const printersModel=0); /** * @brief ~UeSettings */ ~UeSettings(); Q_INVOKABLE inline QString ueServerAddress() const { return this->m_ueServerAddress; } Q_INVOKABLE inline QString ueServerPort() const { return this->m_ueServerPort; } Q_INVOKABLE inline QString ueDatabaseName() const { return this->m_ueDatabaseName; } Q_INVOKABLE inline QString ueDatabaseUsername() const { return this->m_ueDatabaseUsername; } Q_INVOKABLE inline QString ueDatabasePassword() const { return this->m_ueDatabasePassword; } Q_INVOKABLE inline QString ueHostname() const { return this->m_ueHostname; } Q_INVOKABLE inline bool ueAutomaticStockUpdateFromFirwstWarehouse() const { return this->m_ueAutomaticStockUpdateFromFirstWarehouse; } Q_INVOKABLE inline QString ueNumerOfTopSalesProducts() const { return this->m_ueNumberOfTopSalesProductsShown; } Q_INVOKABLE inline bool ueAutomaticLogoffWorkerAtBill() const { return this->m_ueAutoLogoffWorkerAtBill; } /** * @brief ueConnectToDatabase * @return true if connetion to database successfull, otherwise false */ bool ueConnectToDatabase(); /** * @brief ueSaveSettings * @param address * @param port * @param dbName * @param dbUsername * @param dbPassword * @param hostName * @param autoStockUpdate * @param topN * @param autoLogoffWorkerAtBill * @return true if setitngs were saved in database successfully, otherwise false */ Q_INVOKABLE bool ueSaveSettings(const QString& address, const QString& port, const QString& dbName, const QString& dbUsername, const QString& dbPassword, const QString& hostName, const QString& autoStockUpdate, const QString& topN, const QString& autoLogoffWorkerAtBill/*, UeTypePrintersList* const printersList*/); /** * @brief ueLoadSettings * @return true if settings were loaded successfully, otherwise false */ Q_INVOKABLE bool ueLoadSettings(); /** * @brief ueTestConnection * @param address * @param port * @param dbName * @param dbUsername * @param dbPassword * @return true if successfully connected to database, otherwise false */ Q_INVOKABLE bool ueTestConnection(const QString& address, const QString& port, const QString& dbName, const QString& dbUsername, const QString& dbPassword); signals: /** * @brief ueSignalSettingsLoaded */ void ueSignalSettingsLoaded(); /** * @brief ueSignalSettingsSaved */ void ueSignalSettingsSaved(); /** * @brief ueSignalSettingsNotFound */ void ueSignalSettingsNotFound(); /** * @brief ueSignalTestDatabaseConnectionOk */ void ueSignalTestDatabaseConnectionOk(); /** * @brief ueSignalTestDatabaseConnectionFailed */ void ueSignalTestDatabaseConnectionFailed(); /** * @brief ueSignalSettingsDatabaseCreated */ void ueSignalSettingsDatabaseCreated(); /** * @brief ueSignalSettingsDatabaseEmpty */ void ueSignalSettingsDatabaseEmpty(); public slots: }; #endif // UESETTINGS_H_C++_Qt_Qml_Qt Signals - Fatal编程技术网

C++;信号未在QML侧捕捉到 我在代码> QML中检查了 Qt C++信号。这是我的UeSettings课程标题: #ifndef UESETTINGS_H #define UESETTINGS_H #include <QObject> #include <QSqlDatabase> #include <QString> #include <QStringList> #include <QDebug> #include <QSqlQuery> #include <QSqlError> #include <QDir> #include <QDateTime> #include "uedefaults.h" #include "models/ueprintersmodel.h" #include "uetypes.h" /** * @brief The UeSettings class */ class UeSettings : public QObject { Q_OBJECT private: /** * @brief m_ueServerAddress */ QString m_ueServerAddress; /** * @brief m_ueServerPort */ QString m_ueServerPort; /** * @brief m_ueDatabaseName */ QString m_ueDatabaseName; /** * @brief m_ueDatabaseUsername */ QString m_ueDatabaseUsername; /** * @brief m_ueDatabasePassword */ QString m_ueDatabasePassword; /** * @brief m_ueHostname */ QString m_ueHostname; /** * @brief m_ueNumberOfTopSalesProductsShown */ QString m_ueNumberOfTopSalesProductsShown; /** * @brief m_ueDb */ QSqlDatabase m_ueDb; /** * @brief m_ueAutomaticStockUpdateFromFirstWarehouse */ bool m_ueAutomaticStockUpdateFromFirstWarehouse; /** * @brief m_ueAutoLogoffWorkerAtBill */ bool m_ueAutoLogoffWorkerAtBill; /** * @brief m_uePrintersModel */ UePrintersModel* m_uePrintersModel; /** * @brief ueSetServerAddress * @param address */ inline void ueSetServerAddress(const QString& address) { this->m_ueServerAddress=address; } /** * @brief ueSetServerPort * @param port */ inline void ueSetServerPort(const QString& port) { this->m_ueServerPort=port; } /** * @brief ueSetDatabaseName * @param dbName */ inline void ueSetDatabaseName(const QString& dbName) { this->m_ueDatabaseName=dbName; } /** * @brief ueSetDatabaseUsername * @param dbUsername */ inline void ueSetDatabaseUsername(const QString& dbUsername) { this->m_ueDatabaseUsername=dbUsername; } /** * @brief ueSetDatabasePassword * @param dbPassword */ inline void ueSetDatabasePassword(const QString& dbPassword) { this->m_ueDatabasePassword=dbPassword; } /** * @brief ueSetNumberOfTopSalesProductsShown * @param topN */ inline void ueSetNumberOfTopSalesProductsShown(const QString& topN) { this->m_ueNumberOfTopSalesProductsShown=topN; } /** * @brief ueSetHostname * @param hostname */ inline void ueSetHostname(const QString& hostname) { this->m_ueHostname=hostname; } /** * @brief ueSetAutomaticStockUpdateFromFirstWarehouse * @param automaticStockUpdate */ inline void ueSetAutomaticStockUpdateFromFirstWarehouse(const bool& automaticStockUpdate) { this->m_ueAutomaticStockUpdateFromFirstWarehouse=automaticStockUpdate; } /** * @brief ueSetAutoLogoffWorkerAtBill * @param automaticLogoffWorkerAtBill */ inline void ueSetAutoLogoffWorkerAtBill(const bool& automaticLogoffWorkerAtBill) { this->m_ueAutoLogoffWorkerAtBill=automaticLogoffWorkerAtBill; } /** * @brief uePrintersModel * @return */ inline UePrintersModel* uePrintersModel() const { return this->m_uePrintersModel; } /** * @brief ueSetPrintersModel * @param printersModel */ inline void ueSetPrintersModel(UePrintersModel* const printersModel=0) { this->m_uePrintersModel=printersModel; } /** * @brief ueDatabase * @return */ QSqlDatabase ueDatabase() { return this->m_ueDb; } /** * @brief ueSetDatabase * @param database */ void ueSetDatabase(const QSqlDatabase& database) { this->m_ueDb=database; } /** * @brief ueCreateDatabase * @return true if settings database successfully created, otherwise false */ bool ueCreateDatabase(); /** * @brief ueDatabaseExists * @return true if settings database exists, otherwise false */ bool ueDatabaseExists(); public: /** * @brief UeSettings * @param parent * @param printersModel */ explicit UeSettings(QObject *parent = 0, UePrintersModel* const printersModel=0); /** * @brief ~UeSettings */ ~UeSettings(); Q_INVOKABLE inline QString ueServerAddress() const { return this->m_ueServerAddress; } Q_INVOKABLE inline QString ueServerPort() const { return this->m_ueServerPort; } Q_INVOKABLE inline QString ueDatabaseName() const { return this->m_ueDatabaseName; } Q_INVOKABLE inline QString ueDatabaseUsername() const { return this->m_ueDatabaseUsername; } Q_INVOKABLE inline QString ueDatabasePassword() const { return this->m_ueDatabasePassword; } Q_INVOKABLE inline QString ueHostname() const { return this->m_ueHostname; } Q_INVOKABLE inline bool ueAutomaticStockUpdateFromFirwstWarehouse() const { return this->m_ueAutomaticStockUpdateFromFirstWarehouse; } Q_INVOKABLE inline QString ueNumerOfTopSalesProducts() const { return this->m_ueNumberOfTopSalesProductsShown; } Q_INVOKABLE inline bool ueAutomaticLogoffWorkerAtBill() const { return this->m_ueAutoLogoffWorkerAtBill; } /** * @brief ueConnectToDatabase * @return true if connetion to database successfull, otherwise false */ bool ueConnectToDatabase(); /** * @brief ueSaveSettings * @param address * @param port * @param dbName * @param dbUsername * @param dbPassword * @param hostName * @param autoStockUpdate * @param topN * @param autoLogoffWorkerAtBill * @return true if setitngs were saved in database successfully, otherwise false */ Q_INVOKABLE bool ueSaveSettings(const QString& address, const QString& port, const QString& dbName, const QString& dbUsername, const QString& dbPassword, const QString& hostName, const QString& autoStockUpdate, const QString& topN, const QString& autoLogoffWorkerAtBill/*, UeTypePrintersList* const printersList*/); /** * @brief ueLoadSettings * @return true if settings were loaded successfully, otherwise false */ Q_INVOKABLE bool ueLoadSettings(); /** * @brief ueTestConnection * @param address * @param port * @param dbName * @param dbUsername * @param dbPassword * @return true if successfully connected to database, otherwise false */ Q_INVOKABLE bool ueTestConnection(const QString& address, const QString& port, const QString& dbName, const QString& dbUsername, const QString& dbPassword); signals: /** * @brief ueSignalSettingsLoaded */ void ueSignalSettingsLoaded(); /** * @brief ueSignalSettingsSaved */ void ueSignalSettingsSaved(); /** * @brief ueSignalSettingsNotFound */ void ueSignalSettingsNotFound(); /** * @brief ueSignalTestDatabaseConnectionOk */ void ueSignalTestDatabaseConnectionOk(); /** * @brief ueSignalTestDatabaseConnectionFailed */ void ueSignalTestDatabaseConnectionFailed(); /** * @brief ueSignalSettingsDatabaseCreated */ void ueSignalSettingsDatabaseCreated(); /** * @brief ueSignalSettingsDatabaseEmpty */ void ueSignalSettingsDatabaseEmpty(); public slots: }; #endif // UESETTINGS_H

C++;信号未在QML侧捕捉到 我在代码> QML中检查了 Qt C++信号。这是我的UeSettings课程标题: #ifndef UESETTINGS_H #define UESETTINGS_H #include <QObject> #include <QSqlDatabase> #include <QString> #include <QStringList> #include <QDebug> #include <QSqlQuery> #include <QSqlError> #include <QDir> #include <QDateTime> #include "uedefaults.h" #include "models/ueprintersmodel.h" #include "uetypes.h" /** * @brief The UeSettings class */ class UeSettings : public QObject { Q_OBJECT private: /** * @brief m_ueServerAddress */ QString m_ueServerAddress; /** * @brief m_ueServerPort */ QString m_ueServerPort; /** * @brief m_ueDatabaseName */ QString m_ueDatabaseName; /** * @brief m_ueDatabaseUsername */ QString m_ueDatabaseUsername; /** * @brief m_ueDatabasePassword */ QString m_ueDatabasePassword; /** * @brief m_ueHostname */ QString m_ueHostname; /** * @brief m_ueNumberOfTopSalesProductsShown */ QString m_ueNumberOfTopSalesProductsShown; /** * @brief m_ueDb */ QSqlDatabase m_ueDb; /** * @brief m_ueAutomaticStockUpdateFromFirstWarehouse */ bool m_ueAutomaticStockUpdateFromFirstWarehouse; /** * @brief m_ueAutoLogoffWorkerAtBill */ bool m_ueAutoLogoffWorkerAtBill; /** * @brief m_uePrintersModel */ UePrintersModel* m_uePrintersModel; /** * @brief ueSetServerAddress * @param address */ inline void ueSetServerAddress(const QString& address) { this->m_ueServerAddress=address; } /** * @brief ueSetServerPort * @param port */ inline void ueSetServerPort(const QString& port) { this->m_ueServerPort=port; } /** * @brief ueSetDatabaseName * @param dbName */ inline void ueSetDatabaseName(const QString& dbName) { this->m_ueDatabaseName=dbName; } /** * @brief ueSetDatabaseUsername * @param dbUsername */ inline void ueSetDatabaseUsername(const QString& dbUsername) { this->m_ueDatabaseUsername=dbUsername; } /** * @brief ueSetDatabasePassword * @param dbPassword */ inline void ueSetDatabasePassword(const QString& dbPassword) { this->m_ueDatabasePassword=dbPassword; } /** * @brief ueSetNumberOfTopSalesProductsShown * @param topN */ inline void ueSetNumberOfTopSalesProductsShown(const QString& topN) { this->m_ueNumberOfTopSalesProductsShown=topN; } /** * @brief ueSetHostname * @param hostname */ inline void ueSetHostname(const QString& hostname) { this->m_ueHostname=hostname; } /** * @brief ueSetAutomaticStockUpdateFromFirstWarehouse * @param automaticStockUpdate */ inline void ueSetAutomaticStockUpdateFromFirstWarehouse(const bool& automaticStockUpdate) { this->m_ueAutomaticStockUpdateFromFirstWarehouse=automaticStockUpdate; } /** * @brief ueSetAutoLogoffWorkerAtBill * @param automaticLogoffWorkerAtBill */ inline void ueSetAutoLogoffWorkerAtBill(const bool& automaticLogoffWorkerAtBill) { this->m_ueAutoLogoffWorkerAtBill=automaticLogoffWorkerAtBill; } /** * @brief uePrintersModel * @return */ inline UePrintersModel* uePrintersModel() const { return this->m_uePrintersModel; } /** * @brief ueSetPrintersModel * @param printersModel */ inline void ueSetPrintersModel(UePrintersModel* const printersModel=0) { this->m_uePrintersModel=printersModel; } /** * @brief ueDatabase * @return */ QSqlDatabase ueDatabase() { return this->m_ueDb; } /** * @brief ueSetDatabase * @param database */ void ueSetDatabase(const QSqlDatabase& database) { this->m_ueDb=database; } /** * @brief ueCreateDatabase * @return true if settings database successfully created, otherwise false */ bool ueCreateDatabase(); /** * @brief ueDatabaseExists * @return true if settings database exists, otherwise false */ bool ueDatabaseExists(); public: /** * @brief UeSettings * @param parent * @param printersModel */ explicit UeSettings(QObject *parent = 0, UePrintersModel* const printersModel=0); /** * @brief ~UeSettings */ ~UeSettings(); Q_INVOKABLE inline QString ueServerAddress() const { return this->m_ueServerAddress; } Q_INVOKABLE inline QString ueServerPort() const { return this->m_ueServerPort; } Q_INVOKABLE inline QString ueDatabaseName() const { return this->m_ueDatabaseName; } Q_INVOKABLE inline QString ueDatabaseUsername() const { return this->m_ueDatabaseUsername; } Q_INVOKABLE inline QString ueDatabasePassword() const { return this->m_ueDatabasePassword; } Q_INVOKABLE inline QString ueHostname() const { return this->m_ueHostname; } Q_INVOKABLE inline bool ueAutomaticStockUpdateFromFirwstWarehouse() const { return this->m_ueAutomaticStockUpdateFromFirstWarehouse; } Q_INVOKABLE inline QString ueNumerOfTopSalesProducts() const { return this->m_ueNumberOfTopSalesProductsShown; } Q_INVOKABLE inline bool ueAutomaticLogoffWorkerAtBill() const { return this->m_ueAutoLogoffWorkerAtBill; } /** * @brief ueConnectToDatabase * @return true if connetion to database successfull, otherwise false */ bool ueConnectToDatabase(); /** * @brief ueSaveSettings * @param address * @param port * @param dbName * @param dbUsername * @param dbPassword * @param hostName * @param autoStockUpdate * @param topN * @param autoLogoffWorkerAtBill * @return true if setitngs were saved in database successfully, otherwise false */ Q_INVOKABLE bool ueSaveSettings(const QString& address, const QString& port, const QString& dbName, const QString& dbUsername, const QString& dbPassword, const QString& hostName, const QString& autoStockUpdate, const QString& topN, const QString& autoLogoffWorkerAtBill/*, UeTypePrintersList* const printersList*/); /** * @brief ueLoadSettings * @return true if settings were loaded successfully, otherwise false */ Q_INVOKABLE bool ueLoadSettings(); /** * @brief ueTestConnection * @param address * @param port * @param dbName * @param dbUsername * @param dbPassword * @return true if successfully connected to database, otherwise false */ Q_INVOKABLE bool ueTestConnection(const QString& address, const QString& port, const QString& dbName, const QString& dbUsername, const QString& dbPassword); signals: /** * @brief ueSignalSettingsLoaded */ void ueSignalSettingsLoaded(); /** * @brief ueSignalSettingsSaved */ void ueSignalSettingsSaved(); /** * @brief ueSignalSettingsNotFound */ void ueSignalSettingsNotFound(); /** * @brief ueSignalTestDatabaseConnectionOk */ void ueSignalTestDatabaseConnectionOk(); /** * @brief ueSignalTestDatabaseConnectionFailed */ void ueSignalTestDatabaseConnectionFailed(); /** * @brief ueSignalSettingsDatabaseCreated */ void ueSignalSettingsDatabaseCreated(); /** * @brief ueSignalSettingsDatabaseEmpty */ void ueSignalSettingsDatabaseEmpty(); public slots: }; #endif // UESETTINGS_H,c++,qt,qml,qt-signals,C++,Qt,Qml,Qt Signals,在第45行和第46行: 现在,在main.cpp中创建名为UeSettings的对象UeSettings的实例,并将其公开给QML: UeBluetoothManager* ueBtManager=new UeBluetoothManager(qApp); UePrintersModel* uePrintersModel=new UePrintersModel(qApp, ueBtManager); UeSettings* ueSettings=new UeSettings(qApp,

在第45行和第46行:

现在,在
main.cpp
中创建名为
UeSettings
的对象
UeSettings
的实例,并将其公开给
QML

UeBluetoothManager* ueBtManager=new UeBluetoothManager(qApp);
UePrintersModel* uePrintersModel=new UePrintersModel(qApp,
    ueBtManager);
UeSettings* ueSettings=new UeSettings(qApp,
    uePrintersModel);

engine.rootContext()->setContextProperty("ueBtManager",
    ueBtManager);
engine.rootContext()->setContextProperty("uePrintersModel",
    uePrintersModel);
engine.rootContext()->setContextProperty("ueSettings",
    ueSettings);
我试图在一些
QML
文件中捕获信号
ueSignalSettingsDatabaseCreated()
ueSignalSettingsDatabaseEmpty()

Connections
{
    target: ueSettings

    onUeSignalSettingsDatabaseCreated:
    {
        ueStatusText.text=qsTr("Settings Database Created.");
    }   // onUeSignalSettingsDatabaseCreated
}   // Connections

Connections
{
    target: ueSettings

    onUeSignalSettingsDatabaseEmpty:
    {
        ueStatusText.text=qsTr("Settings Database is Empty.");
    }   // onUeSignalSettingsDatabaseEmpty
}   // Connections

来自
C++
端的信号被触发,我已经用调试器进行了三次检查,并且没有被
QML
端捕获,因为
text
属性没有被更改。为什么?调试控制台根本不会触发任何警告或运行时错误(与问题相关)。

您需要重新运行qMake、clean和rebuild,以便正确连接信号。如果我遇到这个问题,至少我经常遇到这种情况。

您需要重新运行qMake、clean和rebuild,以便正确连接信号。如果我有这个问题,至少我经常遇到这种情况。

可能是在
连接
对象准备好接收QML中的信号之前发出信号。如果添加查询方法,例如

Q_INVOKABLE bool UeSettings::isUeSignalSettingsDatabaseCreated()
当您从QML端调用它时,它可能返回true


如果我是你,我会使用属性来跟踪状态。从QML,您可以使用头文件中定义的属性名称访问
Q_属性。

可能是在
连接
对象准备好接收QML中的信号之前发出信号。如果添加查询方法,例如

Q_INVOKABLE bool UeSettings::isUeSignalSettingsDatabaseCreated()
当您从QML端调用它时,它可能返回true

如果我是你,我会使用属性来跟踪状态。在QML中,您可以使用头文件中定义的属性名称访问
Q_属性。

用户是对的,在
连接
对象准备在
QML
端接收信号之前发出信号。我已经通过连接信号解决了这个问题 对于
UeSettings::ueSlotQMLFileLoaded()
slot,我检查设置数据库的状态,而不是在构造函数中进行检查:

void UeSettings::ueSlotQMLFileLoaded(QObject* object,
    const QUrl& url)
{
    if(!this->ueConnectToDatabase())
    {
        qDebug() << Q_FUNC_INFO
                 << this->ueDatabase().lastError().text();
    }   // if
}   // ueSlotQMLFileLoaded
void UeSettings::ueSlotQMLFileLoaded(QObject*object,
const-quorl和url)
{
如果(!this->ueConnectToDatabase())
{
qDebug()用户是对的,在
连接
对象准备在
QML
端接收信号之前,信号已发出。我已通过连接到信号解决了此问题 对于
UeSettings::ueSlotQMLFileLoaded()
slot,我检查设置数据库的状态,而不是在构造函数中进行检查:

void UeSettings::ueSlotQMLFileLoaded(QObject* object,
    const QUrl& url)
{
    if(!this->ueConnectToDatabase())
    {
        qDebug() << Q_FUNC_INFO
                 << this->ueDatabase().lastError().text();
    }   // if
}   // ueSlotQMLFileLoaded
void UeSettings::ueSlotQMLFileLoaded(QObject*object,
const-quorl和url)
{
如果(!this->ueConnectToDatabase())
{

qDebug()我的代码中没有
UeSettings{id:UeSettings}
,我在
main.cpp:
engine.rootContext()->setContextProperty(“UeSettings”,UeSettings)中将此对象公开给
QML
为什么我要在
QML
code中重新创建对象?这没有意义。我在
main.cpp
中创建它,而我不需要在
QML
中重新创建它。对象暴露在
QML
中,就像上面提到的示例中的对象一样,而示例中的对象是有效的,我的代码却没有。我遗漏了一些微小的东西……我们怎么能看到它呢在您使用@AlexanderVX检查测试的QML中有上下文可用。您是否从类构造函数调用ueCreateDatabase()?我的代码中没有
UeSettings{id:UeSettings}
,我将此对象公开给
main.cpp:
engine.rootContext()->setContextProperty(“UeSettings”,UeSettings)中的
QML
为什么我要在
QML
code中重新创建对象?这没有意义。我在
main.cpp
中创建它,而我不需要在
QML
中重新创建它。对象暴露在
QML
中,就像上面提到的示例中的对象一样,而示例中的对象是有效的,我的代码却没有。我遗漏了一些微小的东西……我们怎么能看到它呢在该上下文中,可以在QML中使用@AlexanderVX check进行测试。您正在调用ueCreateDatabase()吗从类构造函数?很好的提示,但是,我想要事件驱动的行为,因为我想要在创建数据库后弹出设置窗口。很好的提示,但是,我想要事件驱动的行为,因为我想要在创建数据库后弹出设置窗口。我想区别在于,在您的情况下,您启动了从构造函数发送信号Tor,不是在C++对象被完全构造之后。在例子中:1)完全创建C++对象,2)QML加载信号SytId假设不同的是,在你的情况下,你开始了从构造函数发送的信号,而不是在C++对象被完全构造之后。在例子中:1)完全创建了C++对象,2)QML加载了3个信号。