[英]Little issue with 'this' (invalid use of 'this' in a non-member function)
当我解决了这个问题后,我终于完成了我的编 :D 一如既往,问题的模型如下。 我invalid use of 'this' in a non-member function
错误中得到了invalid use of 'this' in a non-member function
的invalid use of 'this' in a non-member function
。 在我看来,我所做的一切都是正确的:我已经将类移到了main
函数之外,而且我也没有忘记Q_OBJECT
宏......有人可以在这里帮助我,请注意我是 OOP 的新手。 谢谢!
#include <QtGui>
#include <QtCore>
class MyObject : public QObject
{
Q_OBJECT
public:
QTextEdit text;
QString a;
public slots:
void onClicked() {
text.setText(a);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget mw;
mw.setWindowTitle("Main Window");
mw.resize(400, 400);
mw.show();
QLabel label ("Enter something:", &mw);
label.setAlignment(Qt::AlignHCenter);
label.show();
QLineEdit line (&mw);
line.show();
QString a = line.text();
QTextEdit text (&mw);
text.show();
QPushButton btn ("Convert", &mw);
QObject::connect(
&btn,
SIGNAL(clicked()),
this, /* the compiler keeps complaining... */
SLOT(onClicked()));
btn.show();
QVBoxLayout layout_mw;
layout_mw.addWidget(&label);
layout_mw.addWidget(&line);
layout_mw.addWidget(&btn);
layout_mw.addWidget(&text);
mw.setLayout(&layout_mw);
return app.exec();
}
您不能在非静态成员函数之外使用this
。
您似乎想将clicked()
信号连接到MyObject
实例上的onClicked()
函数。 这意味着您首先需要创建MyObject
类的一个实例。 然后使用指向该对象的指针作为信号的接收者:
MyObject my_object;
QObject::connect(
&btn,
SIGNAL(clicked()),
&my_object,
SLOT(onClicked()));
不过要小心,因为MyObject
的成员变量与main
函数中的同名局部变量没有任何关系。
从我上面的示例代码来看, my_object.text
是一个与text
完全不同的变量。 当然, my_object.a
和a
也是如此。
如对您的问题的评论所示,有更好的方法可以做您想做的事,而无需创建MyObject
类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.