在QT 4中创建插槽时的模板问题

A template issue when creating a slot in Qt 4

本文关键字:问题 插槽 QT 创建      更新时间:2023-10-16

我正在尝试创建一个用于信号/插槽连接的类(旧语法,QT 4.8),当我不断收到模板错误时,我做错了什么: invalid declaration of member template in local class ...显然与Q_OBJECT宏有关...我该怎么办?这是一个建模程序:

#include <QtGui>
#include <QtCore>
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();
    class MyObject : public QObject
    {
       Q_OBJECT       /* the problem is somewhere here... */
       public:
       QTextEdit text;
       QString a;
       public slots:
       void onClicked() {
          text.setText(a);
      }
    };
    QPushButton btn ("Convert", &mw);
    QObject::connect(
      &btn,
      SIGNAL(clicked()),
      this,
      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();
}

QT的MOC不能处理嵌套类也不能处理本地类。您将必须在main之外移动类定义。该文档仅提及嵌套类,但限制也适用于本地类。