所以我试图在两个类之间传递数据。 第一个类有一个发送QString的信号,第二个类有一个接收QString的Slot。问题是,接收QString的类没有保留它。我可以在Slot中显示它,但不能在课堂的其他地方显示。这是我的代码:
class1.h(发件人)
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
signals:
void message(QString resolution);
private:
GLWidget *widget;
QString resolution;
};
#endif // MAINWINDOW_H
class2.h(接收方)
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);
//
...
//
float zoomWindow;
QString resolution;
public slots:
void reception(QString resolution);
};
class1.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
resolution = "";
widget = new GLWidget(NULL);
connect(this, SIGNAL(message(QString)), widget, SLOT(reception(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_radioButton_clicked()
{
resolution="0.2";
emit message(resolution);
}
void MainWindow::on_radioButton_3_clicked()
{
resolution="0.3";
emit message(resolution);
}
void MainWindow::on_radioButton_2_clicked()
{
resolution="0.5";
emit message(resolution);
}
class2.cpp
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
zoomWindow=0.5;
}
void GLWidget::reception(QString resolution){
qDebug()<<resolution; //DISPLAY CORRECTLY
zoomWindow = resolution.toFloat(); //TRYING TO STOCK THE VALUE OF RESOLUTION . IN ZOOMWINDOW
qDebug()<<zoomWindow; //DISPLAY CORRECTLY
}
我显然没有编写所有代码,我只是让有趣的部分。
因此,&#34;接收&#34;中zoomWindow的值是正确的。功能,但如果我尝试在另一个功能中显示它,它将恢复到原始值。
我试图在接收插槽中实现一个功能来传输值,但它不起作用。
由于
答案 0 :(得分:0)
我无法重现你的问题。也许问题出在您未共享的代码的一部分中。但请避免使用与该类成员同名的参数。阅读很困惑。
答案 1 :(得分:0)
您是否以编程方式或使用表单编辑器将GLWidget添加到主窗口?
我有类似的代码,我使用表单编辑器添加了GLWidget,并且从主窗口访问GLWidget我必须使用ui-&gt; glwidget-&gt; ...也许你有2个GLWidget对象。我没有在主窗口类上创建任何GLWidget变量。