将 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* 的引用。
我想将 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* 的引用。