Qt连接到PlanText()到不同的类

时间:2014-10-23 19:00:57

标签: c++ qt

toPlainText()返回一个QString,连接槽/信号需要返回void。当我在与textEdit相同的类中工作时,我可以做这样的事情,

QString Transition::getSkipIndex(){
    skipIndex= Transition::ui ->skipEdit->toPlainText();
    return skipIndex;

可以轻松应用于Transition类中的任何其他方法。由于我是在课堂之间进行的,所以我显然需要使用插槽和信号,但我仍然不知道如何继续。我对Qt很新,并且还没有完全理解插槽和信号,所以我们将非常感谢指导。

另外,另一个类在它自己的线程中,否则我只能做一个简单的函数调用。

2 个答案:

答案 0 :(得分:0)

如果您想使用信号/插槽将QString传递到另一个课程,您可以执行以下示例操作。请注意,这显然只是一个虚拟的例子来展示你如何能够发出'来自方法中的类的信号,并让另一个类接收该信号并使其插槽接收(在此示例中)QString。我不能评论这是否是最好的方法,或者切尔诺贝利问的是否是要走的路。

<强> emitter.h

#ifndef EMITTER_H
#define EMITTER_H

#include <QTextEdit>
#include <QString>

class Emitter: public QObject
{

 Q_OBJECT
 public:
   Emitter() { edit.setText("My Text");  }
   void emitText() { emit textChange(edit.toPlainText()); }
 signals:
   void textChange(const QString&);

 private:
  QTextEdit edit;

};

#endif

<强> receiver.h

#ifndef RECEIVER_H
#define RECEIVER_H

#include <QtCore>



class Receiver: public QObject
{
  Q_OBJECT

  public slots:
  void receiveText(const QString& text ) { qDebug() << "Recevied Text" << text; }
};

#endif

<强>的main.cpp

#include <QApplication>

#include "emitter.h"
#include "receiver.h"

int main(int argc, char** argv)
{
  QApplication app(argc,argv);

  Emitter emitter;
  Receiver recevier;

  QObject::connect( &emitter, SIGNAL( textChange(const QString&) ) , &recevier, SLOT( receiveText(const QString& )));
  emitter.emitText();

  return app.exec();

}

答案 1 :(得分:0)

我不确定究竟要求什么。但请注意,如果涉及不同类和成员功能的对象或涉及QString,则不需要信号/槽用于正常的函数调用。这是正常的C ++,只需调用其他函数。