将 QWidget* 作为函数参数传递不符合预期

Passing QWidget* as function parameter doesn't behave as expected

我想将 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)

怎么了?

您将指针作为副本传递,这意味着外部指针未被内部赋值修改。相反,您必须传递一个指针或对您的 QWidget* 的引用。