【问题标题】:Passing QWidget* as function parameter doesn't behave as expected [duplicate]将 QWidget* 作为函数参数传递的行为不符合预期[重复]
【发布时间】:2020-08-20 06:12:27
【问题描述】:

我想将 QWidget 指针传递给一个函数,以通过函数操作获取一些小部件。但是这个指针的值和之前一样。

下一个代码

#include <QApplication>
#include <QWidget>
#include <QDebug>

class Test
{
public:
    QWidget *_widget;
    Test()
    {
        _widget = new QWidget;
    }
    void test_pointer(QWidget *w) const
    {
        w = _widget;
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget *w = nullptr;
    Test t;
    t.test_pointer(w);
    qDebug() << w;

    return app.exec();
}

输出

QWidget(0x0)

怎么了?

【问题讨论】:

  • @Botje 完全,是的。有用。我什至没有怀疑这个功能。谢谢。

标签: c++ qt qwidget


【解决方案1】:

您将指针作为副本传递,这意味着外部指针不会被内部分配修改。相反,您必须将指针或引用传递给您的 QWidget*。

【讨论】:

  • 谢谢。 @Botje 已将我引导至相关主题。
猜你喜欢
  • 2012-10-03
  • 2013-08-13
  • 2019-07-23
  • 2011-04-07
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多