如何从另一个类访问ui组件?

时间:2016-01-27 17:35:08

标签: c++ user-interface pointers object qt5.5

我正在尝试从my_class调用名为display_txt()的方法。该方法应该改变标签中的一些文本。但该方法并未对ui进行任何更改。我知道该方法由于qDebug()而运行。没有错误发生,但标签不会更改为"文本已更改"。 display_txt()正常工作,并在从主窗口小部件类调用时更改标签。论坛中也有类似的问题,但我无法使用这些解决方案。按下按钮btn时我会创建一个对象。

以下是代码:

widget.h

#include <QWidget>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void display_txt();

private slots:
void on_btn_clicked();

private:
Ui::Widget *ui;
};

my_class.h

#include <QWidget>
#include "widget.h"

class my_class : public QWidget
{
Q_OBJECT
public:
explicit my_class(QWidget *parent = 0);
void test(Ui::Widget ui1);
signals:
private:
Widget *wo = new Widget;
};

Widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include "my_class.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);

//display_txt();
qDebug() << "Widget object created";

}
void Widget::display_txt(){
ui->lbl->setText("text changes!!!!!");
qDebug() << "display_txt() method finished";

}
void Widget::on_btn_clicked()
{
my_class mc;
}

my_class.cpp

#include "my_class.h"
#include "QDebug"

my_class::my_class(QWidget *parent) : QWidget(parent)
{
qDebug() << "myclass ran";
wo->display_txt();
}

0 个答案:

没有答案