[英]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.