【问题标题】:QT Signal / SlotQT 信号/槽
【发布时间】:2014-12-06 21:13:20
【问题描述】:

我有一个关于信号和插槽的问题。在我的应用程序中,我想将来自一个对象的信号连接到对话框窗口中的textEdit。我的信号发出QString;如果我违反封装(通过使 UI 公开而不是私有)并将信号直接连接到 textEdit 它可以工作。但我觉得这不是正确的方法。如果我做了如下的事情:

connect(m_osgWidget->picker.get(), SIGNAL(setX(QString)), m_addAgentDlg, SLOT(getX(QString)));

地点:

void getX(QString)
{
    this->ui.textEdit(QString);
}

它给了我一个错误,我不能在这个this->ui.textEdit(QString); 中使用QString 我需要将来自setX() 信号的QString 粘贴到m_addAgentDlgtextEdit 中。如何做到这一点?我哪里做错了?

【问题讨论】:

    标签: c++ qt qmake qtgui qt-signals


    【解决方案1】:

    我很抱歉这么说,但你需要学习基本的 C++。对于带有 Qt 的 C++ 中的此类事情,正确的语法是这样的:

    connect(m_osgWidget->picker.get(), SIGNAL(setX(const QString&)), m_addAgentDlg, SLOT(getX(const QString&)));
    
    // Why do you call it getX? Should it be called setText instead?
    void getX(const QString& string)
    {
        ui->textEdit->setText(string);
    }
    

    【讨论】:

    • 嗯,我还在学习,所以没必要说。我已经尝试了上面发布的所有可能类型的代码,包括您提供的代码。它不起作用。这就是为什么我在这里问它。我继续收到消息说对象中没有这样的插槽。
    • @AzraithSherkhan:你必须重新运行 qmake,但请购买 C++ 书籍。有必要说,因为这些情况是作者与他们共度一生的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2021-02-12
    • 2017-02-23
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多