toPlainText()返回一个QString,连接槽/信号需要返回void。当我在与textEdit相同的类中工作时,我可以做这样的事情,
QString Transition::getSkipIndex(){
skipIndex= Transition::ui ->skipEdit->toPlainText();
return skipIndex;
可以轻松应用于Transition
类中的任何其他方法。由于我是在课堂之间进行的,所以我显然需要使用插槽和信号,但我仍然不知道如何继续。我对Qt很新,并且还没有完全理解插槽和信号,所以我们将非常感谢指导。
另外,另一个类在它自己的线程中,否则我只能做一个简单的函数调用。
答案 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 ++,只需调用其他函数。