在Qt 4中创建广告位时的模板问题

时间:2019-03-11 09:55:45

标签: c++ qt templates

我正在尝试为信号/插槽连接创建一个类(旧语法,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();

}

1 个答案:

答案 0 :(得分:3)

Qt的MOC无法处理嵌套类或本地类。您必须将类定义移到main之外。 The documentation仅提及嵌套类,但该限制也适用于本地类。